list最常用的遍历五种方式以及使用场景

这篇具有很好参考价值的文章主要介绍了list最常用的遍历五种方式以及使用场景。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

目录

遍历方式的适用场景对比

迭代器遍历

列表迭代器

 增强for遍历

 Lambda表达式

lambda表达式简介

 普通for遍历

集合中通用的并且常用的六种方法


遍历方式的适用场景对比

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

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

增强for遍历: 仅仅需要遍历

lambda表达式:仅仅需要遍历

普通for: 如果便利的时候想操作索引,可以使用普通for

迭代器遍历

首先定义一个list,之后添加数据到list当中,定义出一个迭代器,之后采用迭代器的next方法进行判断有没有元素,有的话就进行返回当前元素的值,之后在进行移动指针到下一位

 public static void main(String[] args) {
        List<Integer> list = new ArrayList<>();
        list.add(111);
        list.add(222);
        list.add(333);
        /** 定义一个迭代器
         * hasNext方法判断是否有该元素
         * next方法 将当前结果返回 并指向下一位
         * */
        Iterator<Integer> it = list.iterator();
        while (it.hasNext()){
            Integer val = it.next();
            System.out.println(val);
        }

    }

如果我在遍历过程中需要删除某个元素,就可以采用下面这种写法,注意要用迭代器提供的remove方法进行删除,不然代码会报异常

public class ListTest {
    public static void main(String[] args) {
        List<Integer> list = new ArrayList<>();
        list.add(111);
        list.add(222);
        list.add(333);
        /** 定义一个迭代器
         * hasNext方法判断是否有该元素
         * next方法 将当前结果返回 并指向下一位
         * */
        Iterator<Integer> it = list.iterator();
        while (it.hasNext()){
            Integer val = it.next();
            if (val.equals(222)){
                it.remove();
            }
            System.out.println(val);
        }
        System.out.println(list);
    }
}

可以看到输出结构如下图,已经删除了222

list最常用的遍历五种方式以及使用场景,数据结构,list,数据结构,java

 需要注意的是,方法遍历时仍然会输出222,因为next方法会先将返回值也就是222传给val,之后才调用的remove方法进行删原list,之后输出的是val的值

当然如果不想要输出要删除的元素,最直接的方法就是加上continue方法

 Iterator<Integer> it = list.iterator();
        while (it.hasNext()){
            Integer val = it.next();
            if (val.equals(222)){
                it.remove();
                continue;
            }
            System.out.println(val);
        }

列表迭代器

这是list格外多出的一种遍历方式

ListIterator<Integer> it = list.listIterator();
        while (it.hasNext()){
            Integer val = it.next();
            System.out.println(val);
        }

他可以对列表进行添加元素,当然也能够删除

 ListIterator<Integer> it = list.listIterator();
        while (it.hasNext()){
            Integer val = it.next();
            if(val.equals(111)){
                it.add(444);
            }
            System.out.println(val);
        }

输出结果如下图所示

list最常用的遍历五种方式以及使用场景,数据结构,list,数据结构,java

 增强for遍历

增强for是在jdk1.5之后出现的,其内部原理就是一个Iterator迭代器

需要注意的是  这种方式只能够遍历list,无法对里面的值就行修改

  for (Integer integer : list) {
            System.out.println(integer);
        }

可以看到我下面这种写法,能不能修改list呢?

for (Integer integer : list) {
            integer = 10086;
            System.out.println(integer);
        }

        System.out.println(list);

如果只是要看遍历的输出结果 这个是肯定会有变化的,因为我们是直接修改了integer的值,输出的结果也是它,但是intege只是作为一个第三者出现,它先等于了list原来的值,也就是说 只是让integer中list的值,并不是让它等于list

可以看到输出结果如下:

list最常用的遍历五种方式以及使用场景,数据结构,list,数据结构,java

 Lambda表达式

不能够操作list,但是代码简洁,只需要一行就可以完成

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

甚至可以缩写成

list.forEach(System.out::println);

lambda表达式简介

Lambda 表达式是 Java 8 引入的一种函数式编程特性,它允许你以一种更简洁的方式表示匿名函数或对象方法的实现。Lambda 表达式的基本语法如下:

(parameters) -> { body }

其中,Lambda 表达式由以下几个部分组成:

  1. 参数列表(parameters):这是 Lambda 表达式接受的输入参数列表。你可以指定零个或多个参数,多个参数用逗号分隔。参数的类型可以明确声明,也可以根据上下文进行推导。

  2. 箭头符号(->):箭头符号分隔参数列表和 Lambda 表达式的主体。

  3. 主体(body):这是 Lambda 表达式的执行逻辑。它可以是一个单独的表达式,或者是一段代码块(用花括号括起来),包含多个语句。

下面是一些使用 Lambda 表达式的示例:

无参数的 Lambda 表达式:

() -> System.out.println("Hello, world!");

有参数的 Lambda 表达式: 

(x, y) -> {
    int sum = x + y;
    System.out.println(sum);
}

有返回值的 Lambda 表达式: 

(x, y) -> x + y

 方法引用:

System.out::println

如果还是不清楚lambda表达式可以参考下面这篇: 

一文看懂lambda表达式_ADRU的博客-CSDN博客

 普通for遍历

这是利用了list的索引就行遍历的方式,但是需要注意的是set是没有索引的,因此要想遍历set就不能用这种方式

 for (int i = 0; i < list.size(); i++) {
            System.out.println(list.get(i));
        }

集合中通用的并且常用的六种方法

1.add

list中元素是可以重复的,因此调用add方法 返回值永远是true set中则是不可以重复的,如果添加相同的元素就会返回false

2.clear

这个是将集合清空的方法

3.remove

返回值也是boolean类型的,删除成功返回true 失败返回false

4.contains

判断元素是否包含

底层是依赖equals方法进行判断是否存在的,如果存的是自定对象,这一定要重写equals(在自定义的javaBean中重写equals就行

5.isEmpty

判断集合是否为空

6.size

找到集合的长度文章来源地址https://www.toymoban.com/news/detail-595160.html

到了这里,关于list最常用的遍历五种方式以及使用场景的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 【Python beautifulsoup】详细介绍beautifulsoup库的使用方法,包括安装方式、基本用法、常用方法和技巧,以及结合lxml和parsel的具体使用场景和区别。

    Python beautifulsoup库是一个强大的Web抓取和解析库,它提供了丰富的功能和简单易用的API,可以帮助我们处理HTML和XML文档,从中提取数据,进行数据清洗和处理。beautifulsoup库基于Python标准库中的html.parser模块,同时还可以与第三方解析库lxml和parsel配合使用,提供更高效和灵活的

    2024年02月04日
    浏览(59)
  • Java遍历Map的五种方式

    java中遍历map一般有五种方法,从最早的Iterator,到java5支持的foreach,再到java8的Lambda表达式。 如果只是获取key,或者value,推荐使用keySet或者values方式 如果同时需要key或者value推荐使用entrySet 如果需要在遍历过程中删除元素推荐使用Iterator 如果需要在遍历过程中增加元素,可

    2024年02月03日
    浏览(53)
  • 图的数据结构,系统学习图的基本概念、定义和建立,学会邻接矩阵、邻接表以及实现六度空间案例,遍历图的方式——广度、深度访问

    图 :G = (V,E) Graph = (Vertex, Edge) V:顶点(数据元素)的有穷非空集合; E:边的有穷集合。 有向图 :每条边都是有方向的     无向图 :每条边都是无方向的   完全图 :任意两点之间都有一条边相连    无向完全图:n个顶点,n(n-1)/2条边 无向完全图:n个顶点,n(n-1)条边 稀疏

    2023年04月22日
    浏览(45)
  • Elasticsearch的基础知识和架构设计,以及一些常用的功能——面向对象编程和数据结构的高级应用场景,以及相应的代码实现方法和工具

    作者:禅与计算机程序设计艺术 2019年,Elasticsearch正式发布了7.0版本。在这个版本更新中,新增了许多新特性和功能,包括全文搜索、分类聚合、分析器、图形化数据可视化等。无论对于企业或个人来说,都意味着更好的应用场景。但是,掌握Elasticsearch并非易事,需要不断学

    2024年02月07日
    浏览(50)
  • Git的常用命令以及使用场景

    在学习Git命令之前,需要先了解工作区,暂存区和版本库这三个概念 在使用Git进行版本控制时,有三个重要的概念:工作区、暂存区和版本库 工作区(Working Directory):工作区是指项目所在的目录,是进行代码编写和修改的地方。在工作区中,可以添加、修改或删除文件。 暂存

    2024年02月15日
    浏览(40)
  • RPM常用命令以及组合使用场景

    本文分享自天翼云开发者社区《 RPM常用命令以及组合使用场景》,作者: 邬祥钊     当涉及到管理基于 Red Hat 系的 Linux 系统时,RPM (Red Hat Package Manager) 是一个常用的软件包管理器。以下是一些常用的 RPM 命令以及它们的组合使用场景: 常用命令: 1. rpm -ivh package.rpm :安装一

    2023年04月27日
    浏览(40)
  • Redis常见数据结构以及使用场景分别是什么

      String String数据结构是简单的key-value类型,value其实不仅可以是String,也可以是数字。 常规key-value缓存应用; 常规计数:微博数,粉丝数等。 #Hash Hash 是一个 string 类型的 field 和 value 的映射表,hash 特别适合用于存储对象,后续操作的时候,你可以直接仅 仅修改这个对象中

    2024年01月23日
    浏览(41)
  • 2023-06-01:讲一讲Redis常见数据结构以及使用场景。

    2023-06-01:讲一讲Redis常见数据结构以及使用场景。 答案2023-06-01: 字符串(String) 适合场景 缓存功能 Redis 作为缓存层,MySQL 作为存储层,在大部分请求中,数据的读取通常是从 Redis 中获取。由于 Redis 具有支持高并发的特性,因此缓存层通常能够加速读写操作,并减轻后端

    2024年02月07日
    浏览(61)
  • Redis基本数据类型常用操作以及使用场景

    单值缓存 对象缓存 分布式锁 计数器 分布式系统全局序列号       对象缓存 电商购物车 优缺点 队列 微博消息和微信公号消息  微信抽奖小程序  微信微博点赞,收藏,标签   集合操作实现微博微信关注模型 集合操作实现电商商品筛选  常用操作  Zset集合操作实现排行

    2024年02月11日
    浏览(41)
  • Collction的List方法,list特有方法,遍历方式,迭代器选择

    @[to] 以下为list删除拓展

    2024年02月05日
    浏览(42)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包