美文网首页
Iterator遍历集合特点

Iterator遍历集合特点

作者: sanqi37 | 来源:发表于2018-05-03 12:01 被阅读0次

    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中的对象已经被遍历完了。

    下面是实例代码:

    [java] view plaincopy

    <embed id="ZeroClipboardMovie_1" src="https://csdnimg.cn/public/highlighter/ZeroClipboard.swf" loop="false" menu="false" quality="best" bgcolor="#ffffff" name="ZeroClipboardMovie_1" allowscriptaccess="always" allowfullscreen="false" type="application/x-shockwave-flash" pluginspage="http://www.macromedia.com/go/getflashplayer" flashvars="id=1&width=16&height=16" wmode="transparent" style="box-sizing: border-box; outline: 0px; word-break: break-all;" width="16" height="16" align="middle">

    <embed id="ZeroClipboardMovie_2" src="https://csdnimg.cn/public/highlighter/ZeroClipboard.swf" loop="false" menu="false" quality="best" bgcolor="#ffffff" name="ZeroClipboardMovie_2" allowscriptaccess="always" allowfullscreen="false" type="application/x-shockwave-flash" pluginspage="http://www.macromedia.com/go/getflashplayer" flashvars="id=2&width=16&height=16" wmode="transparent" style="box-sizing: border-box; outline: 0px; word-break: break-all;" width="16" height="16" align="middle">

    1. package javaset;

    2. import java.util.ArrayList;

    3. import java.util.Collection;

    4. import java.util.Iterator;

    5. public class MyIterator {

    6. public static void main(String[] agrs) {

    7. Collection mCollection = new ArrayList<String>();

    8. mCollection.add("string1");

    9. mCollection.add("string2");

    10. mCollection.add("string3");

    11. mCollection.add("string4");

    12. mCollection.add("string5");

    13. mCollection.remove("string5");

    14. Iterator<String> mIterator = mCollection.iterator();

    15. mIterator.forEachRemaining(object->System.out.println("@"+object ));

    16. //forEachRemaining也是通过调用next方法来遍历迭代器中的元素的,所以在次使用next方法的时候

    17. //游标已经指向了Iterator中的末尾,此时hasNext()方法返回的为false

    18. mIterator = mCollection.iterator();

    19. //需要重新获得Iterator对象,否则在forEachRemaining()方法后调用haxNext()会直接返回false

    20. while (mIterator.hasNext()) {

    21. String temp = (String) mIterator.next();

    22. System.out.println(temp);

    23. if (temp.equals("string4"))

    24. // mCollection.remove(temp);

    25. // 在Iterator遍历集合元素的过程中,一旦集合中的元素被修改,就会抛出ConcurrentModificationException的异常

    26. mIterator.remove();

    27. // 通过Iterator来操作ArrayList中的元素,这里删除的是之前Iterator.next返回的元素

    28. }

    29. System.out.println(mCollection);

    30. }

    31. }

    相关文章

      网友评论

          本文标题:Iterator遍历集合特点

          本文链接:https://www.haomeiwen.com/subject/qnukrftx.html