当前位置:   article > 正文

三种遍历循环、Iterator迭代器 、ListIterator迭代器_selectilistiterator`

selectilistiterator`

for循环、for each、迭代器都可以进行数组与集合的遍历。

三种循环的区别与关联:《关于for循环,for each和迭代器遍历集合或者数组》

for循环:可以拿到数组元素下标,可以对数组进行修改,关心越界,关心强制类型转换。

for each:不能修改元素,使用封装好的类方法。底层用迭代器实现,无法remove。

迭代器:不能修改元素,使用封装好的类方法。可以remove。


以下是ArrayList 的三种遍历循环:

  1. //Arraylist的三种遍历循环
  2. ArrayList<String> list = new ArrayList<>();
  3. list.add("你好哇!");
  4. list.add("周周哇!");
  5. System.out.println(list); //正常打印是因为底层利用了AbstractCollection的toString方法。

一、利用 for 循环遍历循环:

  1. //第一种:利用for循环进行遍历:
  2. for (int i = 0; i < list.size(); i++) {
  3. System.out.println(list.get(i) + " ");
  4. }

二、利用 for each 循环遍历循环:

  1. //第二种:利用for each进行遍历:
  2. for (String s : list){
  3. System.out.println(s + " ");
  4. }

三、利用迭代器遍历循环:继承Collection接口的都实现了迭代器方式。

  1. Iterator<String> it1 = list.iterator();
  2. while (it1.hasNext()){
  3. System.out.println(it1.next() + " ");
  4. }
  5. System.out.println("====List迭代器相关打印=====");
  6. ListIterator<String> it2 = list.listIterator();
  7. while (it2.hasNext()){
  8. System.out.println(it2.next() + " ");
  9. }

Iterator 与 ListIterator 的区别可见该文章:《Iterator和ListIterator之间有什么区别?》

1、Iterator和ListIterator都能实现remove,remove首先需要next迭代出列表中的元素才能进行remove,但ListIterator可以通过set() 实现修改,Iterator只能遍历。

2、ListIterator中的方法更多,例如add。

3、Iterator只能单向遍历,ListIterator可以双向遍历。


其中remove与add方法示例如下:

  1. //Iterator/ListIterator的remove
  2. ArrayList<String> list5 = new ArrayList<>();
  3. list5.add("鹅鹅鹅");
  4. list5.add("曲项向天歌");
  5. Iterator<String> it3 = list5.iterator();
  6. while (it3.hasNext()){ //迭代器删除首先需要使用next方法迭代出集合中的元素,然后才能调用remove方法
  7. String ret = it3.next();
  8. if (ret.equals("鹅鹅鹅")){
  9. it3.remove();
  10. }else {
  11. System.out.println(ret + " ");
  12. }
  13. }
  14. System.out.println("======================");
  15. //ListIterator的add(Iterator没有add)
  16. ArrayList<String> list6 = new ArrayList<>();
  17. list6.add("123");
  18. list6.add("木头人");
  19. ListIterator<String> it4 = list6.listIterator();
  20. while (it4.hasNext()){
  21. String ret = it4.next();
  22. if (ret.equals("123")){
  23. it4.add("那么就");
  24. }else{
  25. System.out.println(ret + " ");
  26. }
  27. }
  28. System.out.println(list6);

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/笔触狂放9/article/detail/179662
推荐阅读
相关标签
  

闽ICP备14008679号