删除一个元素后,我需要打印哈希集元素。使用迭代器并赋予sysout无效,赋予hashset obj的sysout仅打印除去了元素。为什么?如果我们能够使用sysout打印对象,为什么要使用迭代器?
下面是我的代码:
package collectionprg;
import java.util.HashSet;
import java.util.Iterator;
public class RemoveElementHashSet {
public static void main(String[] args) {
HashSet<Integer> hs= new HashSet<Integer>();
hs.add(12);
hs.add(234);
hs.add(123);
hs.add(12);
Iterator<Integer> it = hs.iterator();
while(it.hasNext())
{
System.out.println(it.next());
}
System.out.println("afterremoval");
hs.remove(234);
while(it.hasNext())
{
System.out.println(it.next());
}
System.out.println(hs);
}
}
使用HashSet
完成对Iterator
元素的迭代之后,hasNext()
将始终返回false
。
如果要执行第二次迭代,则必须通过再次调用Iterator
创建第二个it = hs.iterator();
。
// first iteration
Iterator<Integer> it = hs.iterator();
while(it.hasNext()) {
System.out.println(it.next());
}
System.out.println("afterremoval");
hs.remove(234);
// second iteration
it = hs.iterator();
while(it.hasNext()) {
System.out.println(it.next());
}