Iterator遍历集合特点

Java中使用Iterator来遍历集合元素,Iterator遍历集合元素有以下几个特点:

  1.  Iterator遍历集合元素的过程中不允许线程对集合元素进行修改,否则会抛出ConcurrentModificationEception的异常。
  2. Iterator遍历集合元素的过程中可以通过remove方法来移除集合中的元素。
  3. Iterator必须依附某个Collection对象而存在,Iterator本身不具有装载数据对象的功能。
  4. Iterator.remove方法删除的是上一次Iterator.next()方法返回的对象。
  5. 强调以下next()方法,该方法通过游标指向的形式返回Iterator下一个元素。

Iterator的常用方法:

  1.  boolean hasNext() ;判断迭代器中是否还有下一个元素,有则返回true
  2. Object  next();  返回迭代器中下一个元素
  3. void  remove() ; 删除集合里上一个next方法调用的时候返回的对象元素
  4. void forEachRemaining(Consumer action) ;使用Lambdda表达式的形式输出Iterator中所以的元素。注意该方法其实是间接调用next()方法进行遍历,所以再次是next()方法的时候Iterator中的对象已经被遍历完了。


下面是实例代码:

package javaset;

import java.util.ArrayList;
import java.util.Collection;
import java.util.Iterator;

public class MyIterator {
	public static void main(String[] agrs) {
		Collection mCollection = new ArrayList<String>();
		mCollection.add("string1");
		mCollection.add("string2");
		mCollection.add("string3");
		mCollection.add("string4");
		mCollection.add("string5");
		mCollection.remove("string5");
		Iterator<String> mIterator = mCollection.iterator();
		mIterator.forEachRemaining(object->System.out.println("@"+object ));
		//forEachRemaining也是通过调用next方法来遍历迭代器中的元素的,所以在次使用next方法的时候
		//游标已经指向了Iterator中的末尾,此时hasNext()方法返回的为false
		 mIterator = mCollection.iterator(); 
		 //需要重新获得Iterator对象,否则在forEachRemaining()方法后调用haxNext()会直接返回false
		while (mIterator.hasNext()) {
			String temp = (String) mIterator.next();
			System.out.println(temp);
			if (temp.equals("string4"))
				// mCollection.remove(temp);
				// 在Iterator遍历集合元素的过程中,一旦集合中的元素被修改,就会抛出ConcurrentModificationException的异常
				mIterator.remove();
			// 通过Iterator来操作ArrayList中的元素,这里删除的是之前Iterator.next返回的元素
		}

		System.out.println(mCollection);
	}
}



  • 3
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值