import java.util.HashSet;
import java.util.Iterator;
import java.util.Set;public class Test2 { /**
 * @param args
 */
public static void main(String[] args) {
Set set = new HashSet();
Set set1 = new HashSet();
set.add("sanny");
set.add("mary");
set.add("bill");
set.add("tom");
set.add("tony");
set.add("");
set.add("smith");
set.add("anny"); set1.add("smith");
set1.add("tom");
set1.add("tony");
set1.add(""); int flag = 1;
Iterator it = set.iterator();
Iterator it1 = set1.iterator();
while (it.hasNext()) {
flag = 1;
String obj = (String) it.next();
while (it1.hasNext()) {
String obj1 = (String) it1.next();
if (obj.equals("sanny")) {
flag = 0;
System.out.println(obj);
}
}
if (flag == 1) {
System.out.println(obj);
}
}

}
}这是求两个集合的差集,请教各位大神哪里错了?如果用map存呢?应该怎么写呢?iteratorSet

解决方案 »

  1.   

    帮你改好了,错已经写在注释里面了。
    睡觉了。。public class Test { /**
     * @param args
     */
    public static void main(String[] args) {
    Set set = new HashSet();
    Set set1 = new HashSet();
    set.add("sanny");
    set.add("mary");
    set.add("bill");
    set.add("tom");
    set.add("tony");
    set.add("");
    set.add("smith");
    set.add("anny"); set1.add("smith");
    set1.add("tom");
    set1.add("tony");
    set1.add(""); int flag = 1;
    Iterator it = set.iterator();
    Iterator it1 = set1.iterator(); //首先不能用it.hasNext来遍历啊,这东西就只会跑一遍的。
    // while (it.hasNext()) {
    // String obj = (String) it.next();
    // while (it1.hasNext()) {
    // String obj1 = (String) it1.next();
    // if (obj.equals(obj1)) {//你这里写死了呗哪能一直一个名啊。
    // System.out.println(obj);
    // }
    // }
    //
    // }

    for(Object name:set){
    for(Object name1:set1){
    if(name.toString().equals(name1.toString())){
    System.out.println(name1);
    }
    }
    }
    }
    }