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



发布了83 篇原创文章 · 获赞 133 · 访问量 42万+
展开阅读全文

没有更多推荐了,返回首页

©️2019 CSDN 皮肤主题: 大白 设计师: CSDN官方博客

分享到微信朋友圈

×

扫一扫,手机浏览