public class Test{ public static void main(String args[]){ HashSet<String> hs=new HashSet<String>(); hs.add("a"); hs.add("b"); hs.add("c"); //迭代器的使用 Iterator<String>.it=hs.iterator(); //调用Set对象的iterator方法会生成一个迭代器对象,可以通过迭代器来遍历集合;当迭代器定义为泛型,调用next()方法时才会返回相应的类型,否则返回Object,这样就需要强制转型了 while(it.hasNext()){ //遍历迭代器;hasNext()判断是否还有下一个元素,有返回true,没返回false String str = it.next(); //next()取出下个元素返回,指针往后移一位,没有则返回false;注意是无序排列的 System.out.println(str); if(str="a"){ it.remove(); //删除元素 } } } }
集合和迭代器都应使用泛型,这样更加的安全简单
使用Iterator遍历集合比foreach更高效灵活,比如可以直接remove()掉一个元素,而foreach在遍历的时候不允许删除元素
例:
不能在对一个List进行遍历的时候将其中的元素删除掉解决办法是,你可以先将要删除的元素用另一个list装起来,等遍历结束再remove掉
List delList = new ArrayList(); //用来装需要删除的元素
for(Information ia:list)
if(ia.getId()==k){
n++;
delList.add(ia);
}
list.removeAll(delList); //遍历完成后执行删除
由此可见,使用Iterator比foreach更具灵活性