List常见方法和遍历操作

news2025/1/19 23:26:01

List集合的特点

  • 有序: 存和取的元素顺序一致
  • 有索引:可以通过索引操作元素
  • 可重复:存储的元素可以重复

List集合的特有方法

  • Collection的方法List都继承了
  • List集合因为有索引,所以有了很多操作索引的方法

ublic static void main(String[] args) {
       /*

        List系列集合独有的方法:
            void add(int index,E element)       在此集合中的指定位置插入指定的元素
            E remove(int index)                 删除指定索引处的元素,返回被删除的元素
            E set(int index,E element)          修改指定索引处的元素,返回被修改的元素
            E get(int index)                    返回指定索引处的元素
        */

        //1.创建一个集合
        List<String> list = new ArrayList<>();

        //2.添加元素
        list.add("aaa");
        list.add("bbb");//1
        list.add("ccc");

        //void add(int index,E element)       在此集合中的指定位置插入指定的元素
        //细节:原来索引上的元素会依次往后移
        list.add(1,"QQQ");

        //E remove(int index)                 删除指定索引处的元素,返回被删除的元素
        String remove = list.remove(1);
        System.out.println(remove);//aaa

        //E set(int index,E element)          修改指定索引处的元素,返回被修改的元素
        String result = list.set(0, "QQQ");
        System.out.println(result);

        // E get(int index)                    返回指定索引处的元素
        String s = list.get(0);
        System.out.println(s);

        //3.打印集合
        System.out.println(list);
    }

 当我们调用List.remove方法时,回发现有两个参数类型不一样的同名方法:

tips:方法重载调用优先级,优先调用实参和形参类型一致的那个方法。

 public static void main(String[] args) {

        //List系列集合中的两个删除的方法
        //1.直接删除元素
        //2.通过索引进行删除

        //1.创建集合并添加元素
        List<Integer> list = new ArrayList<>();

        list.add(1);
        list.add(2);
        list.add(3);

        //2.删除元素
        //请问:此时删除的是1这个元素,还是1索引上的元素?
        //为什么?
        //因为在调用方法的时候,如果方法出现了重载现象
        //优先调用,实参跟形参类型一致的那个方法。

        //默认int类型,所有是删除的index
        list.remove(1);
        System.out.println(list);

        //手动装箱,手动把基本数据类型的1,变成Integer类型
        Integer i = Integer.valueOf(1);

        //如果需要使用重载的方法remove(Object o)那需要传入Integer
        list.remove(i);

        System.out.println(list);
    }

List集合的遍历方式

  • 迭代器遍历
  • 列表迭代器遍历
  • 增强for遍历
  • lambda表达式遍历
  • 普通for循环(存在索引)
 public static void main(String[] args) {
        /*
            List系列集合的五种遍历方式:
                1.迭代器 遍历过程中需要删除元素,用迭代器
                2.列表迭代器 在遍历过程中需要添加元素,用列表迭代器
                3.增强for 仅想遍历,使用增强for或Lambda
                4.Lambda表达式 仅想遍历,使用增强for或Lambda
                5.普通for循环 遍历的时候需要操作索引,使用普通for
         */

        //创建集合并添加元素
        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(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.列表迭代器
        //获取一个列表迭代器的对象,里面的指针默认也是指向0索引的
        ListIterator<String> it = list.listIterator();
        //额外添加了一个方法:在遍历的过程中,可以添加元素
        while(it.hasNext()){
            String s = it.next();
            if("bbb".equals(s)){
                //不能使用集合添加,已经被占用了,会报出并发修改异常
                //这个时候应该用列表迭代器添加(额外新增的方法)
                it.add("qqq");
            }
            System.out.println(s);
        }
        System.out.println(list);
    }

五种遍历方式对比:

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1344826.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【C语言】分支与循环语句

什么是语句&#xff1f; C语句可分为以下五类&#xff1a; 表达式语句函数调用语句控制语句 &#xff08;本篇重点介绍&#xff09;复合语句空语句 控制语句用于控制程序的执行流程&#xff0c;以实现程序的各种结构方式。C语言支持三种结构&#xff1a; 顺序结构选择结构循…

软件测试/测试开发丨Python 虚拟环境及pip环境管理

venv 虚拟环境管理 venv 虚拟环境的优点 独立的 Python 环境&#xff0c;不会产生冲突有助于包的管理删除和卸载方便 venv 使用方法 创建虚拟环境 python3 -m venv test 激活虚拟环境 切换指定文件夹Windows&#xff1a;/Scripts/macOS&#xff1a;/bin/ 执行指令&#xff…

基于STM/APM32F072制作的J-Link OB调试器项目验证

基于STM/APM32F072制作的J-Link OB调试器项目验证 &#x1f4cd;本文基于github项目&#xff1a;https://github.com/geekchun/Jlink-OB/tree/master⚡申明&#xff1a;仅限个人研究学习&#xff0c;无其他用途。&#x1f33f;采用该项目提供的固件&#xff0c;烧录STM32f4时信…

技能分析:这就是人们写在简历上的内容

您希望您的技能部分听起来像其他人一样吗&#xff1f;另一方面&#xff0c;您是否想遗漏一项顶级技能&#xff0c;因为许多其他简历也列出了它&#xff1f;在脱颖而出和涵盖雇主寻求的所有技能之间找到平衡可能是一个挑战。 优秀的简历技能部分会考虑到每个雇主所寻求的特质。…

驾驭AI助手,开启高效创作之旅:一篇文章,轻松搞定!

在信息爆炸的时代&#xff0c;内容创作已成为个人和企业的核心竞争力。但撰写一篇高质量的文章需要大量时间和精力。现在&#xff0c;有了AI助手&#xff0c;这些烦恼全部消失 首先&#xff0c;我们要进入首助编辑高手主页面&#xff0c;并在上方的板块栏里选择“AI文章创作”…

【docker实战】安装tomcat并连接mysql数据库

本节用docker来安装tomcat&#xff0c;并用这个tomcat连接我们上一节安装好的mysql数据库 一、拉取镜像 [rootlocalhost data]# docker pull tomcat:8.5.69二、运行tomcat bitnami的tomcat的根目录在/opt/bitnami/tomcat/webapps下面&#xff0c;所以我们为了方便部署我们的…

conda环境下nvrtc: error: invalid value for --gpu-architecture解决方法

1 问题描述 在运行视频处理的模型过程中&#xff0c;出现如下异常&#xff1a; nvrtc: error: invalid value for --gpu-architecture (-arch)nvrtc compilation failed: #define NAN __int_as_float(0x7fffffff) #define POS_INFINITY __int_as_float(0x7f800000) #define N…

Cisco模拟器-OSPF路由协议

设计要求用两台双口路由器连接不同IP网段的计算机&#xff0c;并使用OSFP协议发现路由表使不同IP网段的计算机可以相互通信。 通过设计&#xff0c;可以连通IP地址网段不同的局域网&#xff0c;可应用在园区网的互连和互通的实现上。 主要配置步骤 路由器0&#xff1a; Router…

Go语言学习第二天

Go语言数组详解 var 数组变量名 [元素数量]Type 数组变量名&#xff1a;数组声明及使用时的变量名。 元素数量&#xff1a;数组的元素数量&#xff0c;可以是一个表达式&#xff0c;但最终通过编译期计算的结果必须是整型数值&#xff0c;元素数量不能含有到运行时才能确认大小…

GPT-5、开源、更强的ChatGPT!OpenAI公布2024年计划

年终岁尾&#xff0c;正值圣诞节热闹气氛的OpenAI写下了2024年的发展清单。 OpenAI联合创始人兼首席执行官Sam Altman在社交平台公布&#xff0c;AGI&#xff08;稍晚一些&#xff09;、GPT-5、更好的语音模型、更高的费率限制&#xff1b; 更好的GPTs&#xff1b;更好的推理…

海云安亮相2023北京国际金融安全论坛,助力金融企业数字化转型降本增效

近日&#xff0c;2023北京国际金融安全论坛暨金融科技标准认证生态大会在北京金融安全产业园成功举办。深圳海云安网络安全技术有限公司&#xff08;以下简称“海云安”&#xff09;受邀参展亮相此次大会。海云安作为国内领先的金融科技服务商&#xff0c;展示了开发安全系列产…

机器视觉相关硬件

机器视觉相关硬件 文章目录 机器视觉相关硬件一、相机1. 相机的主要参数2. 相机的种类3. 相机的接口4. 相机的选型1.面阵相机的选型2.线阵相机的选型 二、图像采集卡1. 图像采集卡的种类2. 图像采集卡的选型 三、镜头1. 接口2. 最大靶面尺寸3. 物距与焦距4. 光圈5. 分辨率与成像…

使用Python构建微服务

我的新书《Android App开发入门与实战》已于2020年8月由人民邮电出版社出版&#xff0c;欢迎购买。点击进入详情 本文旨在概述基于微服务的架构的基础知识&#xff0c;并学习如何使用 Python 构建微服务。 什么是基于微服务的架构&#xff1f; 它是一种架构风格&#xff0c;将…

基于uibot知网文论采集机器人设计与实现

摘要 人工智能技术的不断更新迭代为财务数据自动化处理带来了新的机遇和挑战&#xff0c;如何通过人工智能等新兴技术来优化现有的财务流程&#xff0c; 创造更多的企业价值&#xff0c;成为财务信息自动化处理是目前的重点研究方向。机器人流 程自动化作为一种新型的自动化技…

Shell三剑客:awk(awk编辑编程)六

一、AWK 的函数前言 awk的函数有许多&#xff0c;除了系统自带的内建函数还有就是用户自定义的函数。 二、AWK 常用的函数 rand() # 返回0 和1 之间一个随机数srand() # 生成随机数种子int() # 取整数length([s]) # 返回指定字符串的长度sub(r,s,[t]) # 对t字符串进行搜索&am…

攻防世界easyphp解题

攻防世界easyphp解题 <?php highlight_file(__FILE__); $key1 0; $key2 0;$a $_GET[a]; $b $_GET[b];if(isset($a) && intval($a) > 6000000 && strlen($a) < 3){if(isset($b) && 8b184b substr(md5($b),-6,6)){$key1 1;}else{die(&q…

PAT 乙级 1039 到底买不买

解题思路:此题用c语言的话可以直接hash去求比较简单&#xff0c;首先求出各个颜色的个数&#xff0c;一比对就可以了&#xff0c;python我利用了字典和集合 c语言代码: #include<stdio.h> int main() {char a[1001],b[1001];int surplus0,miss0;int a_c[128]{0};int b_…

【HarmonyOs Arkts笔记】Arkts ForEach循环使用

说明 ForEach循环数组对象时 要指定对象的唯一标识 例如 id&#xff0c;否则只会显示第一个 State tabsList: object[] [{ name: 砍价活动, id: 1, icon: https://php-b2c.likeshop.cn/uploads/images/2022062414322367e6a5479.png },{ name: 拼团活动, id: 2, icon: https:…

GBASE南大通用-GBase 8s分片表操作 提升大数据处理性能

目录 一、GBase 8s分片表的优势 二、六种分片方法 轮转 1.轮转法 基于表达式分片 2.基本表达式 3.Mod运算表达式 4.Remainder关键字方式 5.List方式 6.interval 固定间隔 三、分片表的索引 1.创建索引的注意事项 2.detach索引替代delete功能展现 3.在现有分片表上增加一个新…

二叉树顺序结构与堆的概念及性质(c语言实现堆)

上次介绍了树&#xff0c;二叉树的基本概念结构及性质&#xff1a;二叉树数据结构&#xff1a;深入了解二叉树的概念、特性与结构 今天带来的是&#xff1a;二叉树顺序结构与堆的概念及性质&#xff0c;还会用c语言来实现堆 文章目录 1. 二叉树的顺序结构2.堆的概念和结构3.堆…