集合框架中遍历list是比较方便的,我们只需有一个for循环即可遍历list中的所有元素,因为list是有序的,而set是无序的,那么如何遍历set集合呢?就需要用到Iterator对象了,Iterator对象称作迭代器,来实现对容器内元素的遍历。
Iterator接口包含三个方法,hasNext(),next(),remove() 下面解释来自API JDK1.6
集合Collection实现了Iterator接口
public interface Collection<E> extends Iterable<E>
所有实现了Collection接口的容器类都有一个iterator方法用来返回一个实现Iterator接口的对象
set集合中使用迭代器遍历元素
<span style="font-size:18px;">//new一个新set集合 Set set=new HashSet(); //往集合中添加元素 set.add("123"); set.add("qaz"); set.add("wsx"); //通过迭代器遍历集合 for(Iterator iter=set.iterator();iter.hasNext();){ String str=(String)iter.next(); System.out.println(str); }</span>
当然list也可以用迭代器遍历
<span style="font-size:18px;">//new一个新list集合 List list=new ArrayList(); //往集合中添加元素 list.add("123"); list.add("qaz"); list.add("wsx"); //通过for循环遍历 for(int i=0;i<list.size;i++){ <span style="white-space:pre"> </span>System.out.println(list.get(i)); } //通过迭代器遍历集合 for(Iterator iter=list.iterator();iter.hasNext();){ String str=(String)iter.next(); System.out.println(str);//输出同上 }</span>
------------------------------------------------------------后续--------------------------------------------------------------
remove方法:我们都知道remove方法是需要在next方法之后使用的,并且只能使用一次,如果你连续使用两次此方法是会报错的,因为第一次使用的时候元素已经被删除了,第二次再删就已经没有东西可删了,就会报错。该方法会移除迭代器返回的最后一个元素,代码示例:
<span style="font-size:18px;">//new一个新set集合 Set set=new HashSet(); //往集合中添加元素 set.add("123"); set.add("qaz"); set.add("wsx"); //通过迭代器遍历集合 for(Iterator iter=set.iterator();iter.hasNext();){ String str=(String)iter.next(); if(str.equals("qaz")){ iter.remove(); } } for(Iterator iter=set.iterator();iter.hasNext();){ String str=(String)iter.next(); System.out.println(str); }</span>
如果我们不使用remove方法,而是直接更改集合元素的值,比如 str="qqq";
即使这样,集合中的元素也不会改变的,在传递参数的时候,有值传参和引用传参,前者是直接把元素的值传过来,而后者是把地址传过来,在引用传参的时候才会相应的改变元素的值,而我们这里的迭代器是值传参,所以不会改变。