当我尝试将另一个列表/集的元素复制到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()时不返回任何内容。我很困惑。你能解释一下吗?
*更新:
感谢您的帮助!这是一个愚蠢的错误...... *
答案 0 :(得分:0)
你最后的while循环试图迭代iter&amp; not iter2(set2的迭代器)。 它应该是
while(iter2.hasNext())
{
....
}
答案 1 :(得分:0)
你有一个拼写错误 - 第二次再次使用iter
代替iter2