当前位置:首页 » 《休闲阅读》 » 正文

【Java】List集合的遍历方式

19 人参与  2024年09月15日 10:41  分类 : 《休闲阅读》  评论

点击全文阅读


文章目录

一、总述二、代码实现1)迭代器遍历2)增强for遍历3)Lambda表达式遍历4)普通for循环5)列表迭代器遍历 三、五种遍历方式对比

一、总述

在正式学习之前,我们先来回忆一下刚刚说过的话:List继承于Collection,因此在Collection中所有的方法在List里面都是可以使用的。

我们在Collection中讲解了三种遍历方式,这三种遍历方式在List集合中也是可以使用的,但是在这些的基础上,它还有自己单独的方式。

List集合一共有五种遍历方式。

迭代器遍历列表迭代器遍历增强for遍历Lambda表达式遍历普通for循环(因为List集合存在索引)

二、代码实现

List本身也是一个接口,因此我们还是需要利用这种多态的方式来创建对象。

//创建集合并添加元素List<String> list = new ArrayList<>();list.add("aaa");list.add("bbb");list.add("ccc");

1)迭代器遍历

Iterator<String> it = list.iterator();while(it.hasNext()){    String str = it.next();    System.out.println(str);}

2)增强for遍历

下面的变量s,其实就是一个第三方的变量而已。在循环的过程中,依次表示集合中的每一个元素

for (String s : list) {    System.out.println(s);}

3)Lambda表达式遍历

forEach方法的底层其实就是一个循环遍历,依次得到集合中的每一个元素,并把每一个元素传递给下面的accept方法
accept方法的形参s,依次表示集合中的每一个元素。

list.forEach(new Consumer<String>() {    @Override    public void accept(String s) {        System.out.println(s);    }});

Lambda表达式

list.forEach(s->System.out.println(s));

4)普通for循环

size方法跟get方法还有循环结合的方式,利用索引获取到集合中的每一个元素

for (int i = 0; i < list.size(); i++) {    //i:依次表示集合中的每一个索引    String s = list.get(i);    System.out.println(s);}

5)列表迭代器遍历

列表迭代器在Java中的名字叫做 ListIterator,它同样也是一个接口,打开帮助文档,来看一下这个接口的用法。

可以看见,ListIterator 是继承 Iterator 的,因此列表迭代器其实是我们之前学习的迭代器的子接口。

里面的指针也是默认指向 0索引

image-20240426073033949

它里面有几个方法需要我们掌握。

1、add(E e) :它可以在迭代的过程中添加元素,而且是利用迭代器里面的方法进行添加。

2、hasNext() :跟原来是一样的。

3、next():跟原来也是一样的。

4、remove() :跟原来也是一样的,利用迭代器删除元素。

剩下的两个方法不用记,了解一下即可。

image-20240426073328469

有两个好玩的方法:hasPrevious()previous(),这两个方法跟 next() 是反过来的,next() 是从前往后去移动迭代器里面的指针;previous() 是从后往前反过来进行移动。

迭代器创建出来指针默认是指向 0索引 的,那假如你现在直接调用 previous() 它是会报错的,因为它前面已经没有元素让你去移动了。

hasPrevious()previous() 只有先将迭代器往后移动,它才可以往前移动。它没有办法创建迭代器的时候直接让指针指向最后一个,然后再一个一个倒着遍历,虽然也可以这么做,但是不常见。

这两个同样也了解一下即可,因为在以后基本上用不到它。

image-20240426074313893

这个迭代器额外添加了一个方法:在遍历的过程中,可以添加元素。

要注意,在添加的时候不能使用集合的方法 add() 添加,因为在用迭代器遍历集合的过程中,不能使用集合的方法 删除 / 添加。

ListIterator<String> it = list.listIterator();while(it.hasNext()){    String str = it.next();    if("bbb".equals(str)){        //qqq        it.add("qqq");    }}System.out.println(list);

三、五种遍历方式对比

迭代器遍历:在遍历的过程中需要删除元素,请使用迭代器。

列表迭代器:在遍历的过程中需要添加元素,只能使用列表迭代器。

列表迭代器List集合 系列中独有的,Set集合 是用不了的,Set集合 只能使用上面迭代器的方式进行遍历。

增强for遍历Lambda表达式:仅仅想遍历获取集合里面的每一个元素,此时使用增强for遍历Lambda表达式,因为这两种方式代码最简单。

普通for:如果遍历的时候想操作索引,那么可以用普通for遍历。


点击全文阅读


本文链接:http://m.zhangshiyu.com/post/160191.html

<< 上一篇 下一篇 >>

  • 评论(0)
  • 赞助本站

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。

关于我们 | 我要投稿 | 免责申明

Copyright © 2020-2022 ZhangShiYu.com Rights Reserved.豫ICP备2022013469号-1