当前位置: 首页 > news >正文

List常见方法和遍历操作

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");//1list.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类型,所有是删除的indexlist.remove(1);System.out.println(list);//手动装箱,手动把基本数据类型的1,变成Integer类型Integer i = Integer.valueOf(1);//如果需要使用重载的方法remove(Object o)那需要传入Integerlist.remove(i);System.out.println(list);}

List集合的遍历方式

  • 迭代器遍历
  • 列表迭代器遍历
  • 增强for遍历
  • lambda表达式遍历
  • 普通for循环(存在索引)
 public static void main(String[] args) {/*List系列集合的五种遍历方式:1.迭代器 遍历过程中需要删除元素,用迭代器2.列表迭代器 在遍历过程中需要添加元素,用列表迭代器3.增强for 仅想遍历,使用增强for或Lambda4.Lambda表达式 仅想遍历,使用增强for或Lambda5.普通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);}

五种遍历方式对比:

相关文章:

  • Linux Shell 017-文本行合并工具paste
  • Spring Boot IO官方文档中文版
  • 雨课堂作业整理
  • 几代WiFi有什么差异,它们有什么区别
  • Python---多进程---多线程
  • <JavaEE> TCP 的通信机制(四) -- 流量控制 和 拥塞控制
  • Python 中的运算符介绍(1)
  • 第二节 linux操作系统安装与配置
  • 进阶学习——Linux系统磁盘管理与文件系统
  • 4、内存泄漏检测(多线程)
  • 【网络安全 | Misc】miss_01 太湖杯
  • OSPF的DR与BDR-新版(16)
  • MariaDB单机多实例的配置方法
  • Vue - 使用Element UI Upload / importExcelJs进行文件导入
  • 【C语言学习疑难杂症】第12期:如何从汇编角度深入理解y = (*--p)++这行代码(易懂版)
  • 5分钟即可掌握的前端高效利器:JavaScript 策略模式
  • CentOS 7 修改主机名
  • gops —— Go 程序诊断分析工具
  • JavaScript实现分页效果
  • js中forEach回调同异步问题
  • miaov-React 最佳入门
  • php的插入排序,通过双层for循环
  • Python 基础起步 (十) 什么叫函数?
  • Python代码面试必读 - Data Structures and Algorithms in Python
  • 干货 | 以太坊Mist负责人教你建立无服务器应用
  • 讲清楚之javascript作用域
  • 看图轻松理解数据结构与算法系列(基于数组的栈)
  • 前端技术周刊 2019-01-14:客户端存储
  • 浅析微信支付:申请退款、退款回调接口、查询退款
  • 强力优化Rancher k8s中国区的使用体验
  • 数据可视化之 Sankey 桑基图的实现
  • 双管齐下,VMware的容器新战略
  • 移动端解决方案学习记录
  • ​总结MySQL 的一些知识点:MySQL 选择数据库​
  • (11)MATLAB PCA+SVM 人脸识别
  • (2009.11版)《网络管理员考试 考前冲刺预测卷及考点解析》复习重点
  • (env: Windows,mp,1.06.2308310; lib: 3.2.4) uniapp微信小程序
  • (TipsTricks)用客户端模板精简JavaScript代码
  • (八)五种元启发算法(DBO、LO、SWO、COA、LSO、KOA、GRO)求解无人机路径规划MATLAB
  • (编译到47%失败)to be deleted
  • (第8天)保姆级 PL/SQL Developer 安装与配置
  • (附源码)springboot 智能停车场系统 毕业设计065415
  • (简单有案例)前端实现主题切换、动态换肤的两种简单方式
  • (原創) X61用戶,小心你的上蓋!! (NB) (ThinkPad) (X61)
  • (转载)CentOS查看系统信息|CentOS查看命令
  • (轉貼) 蒼井そら挑戰筋肉擂台 (Misc)
  • (状压dp)uva 10817 Headmaster's Headache
  • .halo勒索病毒解密方法|勒索病毒解决|勒索病毒恢复|数据库修复
  • .MSSQLSERVER 导入导出 命令集--堪称经典,值得借鉴!
  • .NET 将多个程序集合并成单一程序集的 4+3 种方法
  • .Net 知识杂记
  • .net反编译工具
  • .net快速开发框架源码分享
  • .net连接MySQL的方法
  • .NET设计模式(11):组合模式(Composite Pattern)