HashSet不是空的但不能迭代?

时间:2014-06-04 21:13:37

标签: java copy hashset

当我尝试将另一个列表/集的元素复制到HashSet中时,我得到了这个奇怪的结果。这是代码:

public class Test {

public static void main(String args[]) {
    HashSet<String> set1 = new HashSet<String>();
    HashSet<String> set2 = new HashSet<String>();

    set1.add("A");
    set1.add("B");
    set1.add("C");

    Iterator<String> iter = set1.iterator();
    while(iter.hasNext()) {
        String elem = iter.next();
        set2.add(elem);      // copy the elements 
        System.out.println("set1: " + elem + " ");
    }

    System.out.println("SIZE = " + set2.size() + "; isEmpty = " + set2.isEmpty() + "; next = " + iter.hasNext());

    Iterator<String> iter2 = set2.iterator();
    while(iter.hasNext()) {
        String elem = iter2.next();
        System.out.println("set2: " + elem + " ");
    }
}

结果:

set1: A
set1: B 
set1: C 
SIZE = 3; isEmpty = false; next = false

如您所见, set2 不为空,但迭代器在调用 next()时不返回任何内容。我很困惑。你能解释一下吗?

*更新:

感谢您的帮助!这是一个愚蠢的错误...... *

2 个答案:

答案 0 :(得分:0)

你最后的while循环试图迭代iter&amp; not iter2(set2的迭代器)。 它应该是

 while(iter2.hasNext())
 {
   ....
 }

答案 1 :(得分:0)

你有一个拼写错误 - 第二次再次使用iter代替iter2