public static void main(String[] args){
HashSet hs = new HashSet();
hs.add("1st");
hs.add("2nd");
hs.add(new Integer(3));
hs.add(new Double(4.8));
hs.add("2nd"); //导入重复元素
hs.add(new Integer(3)); //导入重复元素,不会成功,HashSet中不允许有重复元素
hs.add(new Date());
System.out.println("开始:size="+hs.size());
Iterator it = hs.iterator();
while(it.hasNext()){
Object o = it.next();
System.out.println(o);
}
System.out.println("---------------------------");
hs.remove("2nd");
System.out.println("移除元素后:size="+hs.size());
//下列循环未执行
while(it.hasNext()){
Object o = it.next();
System.out.println(o);
}
System.out.println("---------------------------");
System.out.println(hs);
} 为什么在删除之后的第二个遍历(Iterator)不能循环打印了,只是执行了第一次的遍历。学基础在,有点不清楚啊,请指教!!
HashSet hs = new HashSet();
hs.add("1st");
hs.add("2nd");
hs.add(new Integer(3));
hs.add(new Double(4.8));
hs.add("2nd"); //导入重复元素
hs.add(new Integer(3)); //导入重复元素,不会成功,HashSet中不允许有重复元素
hs.add(new Date());
System.out.println("开始:size="+hs.size());
Iterator it = hs.iterator();
while(it.hasNext()){
Object o = it.next();
System.out.println(o);
}
System.out.println("---------------------------");
hs.remove("2nd");
System.out.println("移除元素后:size="+hs.size());
//下列循环未执行
while(it.hasNext()){
Object o = it.next();
System.out.println(o);
}
System.out.println("---------------------------");
System.out.println(hs);
} 为什么在删除之后的第二个遍历(Iterator)不能循环打印了,只是执行了第一次的遍历。学基础在,有点不清楚啊,请指教!!
在第二个循环前加一句:it = hs.iterator();
你在上一次遍历后,iterator的指针移位到元素的最末尾,这样iterator的hasNext()方法返回false,所以就不会输出,解决方法就是 重新再赋值,it=hs.iterator()方法,这样赋值后迭代器的逻辑指针会调整指向第一个元素
这个迭代器对象,只能完成一次数据的迭代。
要想第二次迭代,可以再次调用it = hs.iterator();生成新的迭代器对象。