迭代器Iterator接口

集合框架中遍历list是比较方便的,我们只需有一个for循环即可遍历list中的所有元素,因为list是有序的,而set是无序的,那么如何遍历set集合呢?就需要用到Iterator对象了,Iterator对象称作迭代器,来实现对容器内元素的遍历。


Iterator接口包含三个方法,hasNext(),next(),remove() 下面解释来自API JDK1.6

迭代器Iterator接口_第1张图片迭代器Iterator接口_第2张图片迭代器Iterator接口_第3张图片




集合Collection实现了Iterator接口

public interface Collection extends Iterable

所有实现了Collection接口的容器类都有一个iterator方法用来返回一个实现Iterator接口的对象

set集合中使用迭代器遍历元素

//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);
}



输出结果就是,123 qaz wsx


当然list也可以用迭代器遍历

//new一个新list集合
List list=new ArrayList();
//往集合中添加元素
list.add("123");
list.add("qaz");
list.add("wsx");
//通过for循环遍历
for(int i=0;i



在Map中使用迭代器遍历也是一样的道理,代码也基本同上。




------------------------------------------------------------后续--------------------------------------------------------------


remove方法:我们都知道remove方法是需要在next方法之后使用的,并且只能使用一次,如果你连续使用两次此方法是会报错的,因为第一次使用的时候元素已经被删除了,第二次再删就已经没有东西可删了,就会报错。该方法会移除迭代器返回的最后一个元素,代码示例:


//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);
}



输出结果为:123,wsx

如果我们不使用remove方法,而是直接更改集合元素的值,比如 str="qqq";

即使这样,集合中的元素也不会改变的,在传递参数的时候,有值传参和引用传参,前者是直接把元素的值传过来,而后者是把地址传过来,在引用传参的时候才会相应的改变元素的值,而我们这里的迭代器是值传参,所以不会改变。







你可能感兴趣的:(J2SE)