list集合

list集合常用方法
1、add(int index, Object obj) 在指定的索引增加值
`
List list = new ArrayList();
list.add(0, “abc”);
list.add(0, “xyz”);
list.add(1, “qq”);
2、remove(int index) 根据指定索引删除数据
list.remove(1)

3、set(int index, Object obj) 将指定索引处的元素进行修改
list.set(1,“qq”);

4、get(int index) 获取指定索引处的元素
list.get(1)

list遍历
JAVA中循环遍历list有三种方式for循环、增强for循环(也就是常说的foreach循环)、iterator遍历。

普通循环

list.add("abc");list.add("xyz");list.add("qq");list.add("qwer");for (int i = 0; i < list.size(); i++) {Object obj = list.get(i);if (i==0) {list.remove(1);}}System.out.println(list);结果 :   [abc, qq, qwer]
List<String> list = new ArrayList<>();list.add("abc");list.add("xyz");list.add("abc");list.add("xyz");list.add("qq");list.add("qwer");list.add("xyz");for (int i = 0; i < list.size(); i++) {String str = list.get(i);if (str.equals("xyz")) {list.remove(i);list.remove(i-1);}}System.out.println(list);
结果:[abc, xyz, qq]

总结:普通循环可以单独用来删除某个指定的元素,不适合用来进行多次的循环删除,因为ArrayList的底层是数组,当删除某个元素时候,索引也会发生相应的变化,比如你删除的是第1个数据,此时第2个数据就变成了第1个,下一次循环的时候实际读取的就是第3个数据

List<String> list = new ArrayList<>();list.add("abc");list.add("xyz");list.add("abc");list.add("xyz");list.add("qq");list.add("qwer");list.add("xyz");for (int i = 0; i < list.size(); i++) {String str = list.get(i);if (str.equals("xyz")) {list.remove(i);}System.out.println(str);}结果:abcxyzxyzqwerxyz

2、增加for循环

List<String> list = new ArrayList<>();list.add("abc");list.add("xyz");list.add("abc");list.add("xyz");list.add("qq");list.add("qwer");list.add("xyz");for(String str : list) {  //java.util.ConcurrentModificationException   //如果在使用迭代器遍历集合的同时,还用集合对象增删元素,就会出现此异常 ,增强for循环底层是Iteratorif(str.equals("xyz")) {list.remove(str);}}

但是删除完毕马上使用break跳出,则不会触发报错。

 List<String> list = new ArrayList<>();list.add("abc");list.add("xyz");list.add("abc");list.add("xyz");list.add("qq");list.add("qwer");list.add("xyz");for(String str : list) {   if(str.equals("xyz")) {list.remove(str);break;}}System.out.println(list);}结果 : [abc, abc, xyz, qq, qwer, xyz]

3、iterator遍历

迭代器遍历,迭代器增删
迭代器遍历:获取迭代器Iterator,使用迭代器遍历即可
迭代器删除:可以直接调用迭代器的remove方法
List特有迭代器 ListIterator listIterator()

List<String> list = new ArrayList<>();list.add("abc");list.add("xyz");list.add("abc");list.add("xyz");list.add("qq");list.add("qwer");list.add("xyz");Iterator<String> it = list.listIterator();while(it.hasNext()) {if(it.next().equals("xyz")) {it.remove();}System.out.println(it.next());//报错java.util.NoSuchElementException}System.out.println(list);结果:xyzxyzqwerException in thread "main" java.util.NoSuchElementExceptionat java.util.ArrayList$Itr.next(ArrayList.java:862)at com.wzl.list.Listwzl.main(Listwzl.java:23)

解决:如果已经没有下一个元素,却仍然要获取下一个元素,就会出现该异常,表示没有当前元素的异常,因此尽量不要在判断中判断是否有下一个元素之后,连续获取两个下一个元素

List<String> list = new ArrayList<>();list.add("abc");list.add("xyz");list.add("abc");list.add("xyz");list.add("qq");list.add("qwer");list.add("xyz");Iterator<String> it = list.listIterator();while(it.hasNext()) {String str = it.next();if(str.equals("xyz")) {it.remove();}System.out.println(str);}System.out.println(list);}结果: abc
xyz
abc
xyz
qq
qwer
xyz
[abc, abc, qq, qwer]

List三种遍历方式详解相关推荐

  1. C++的三种继承方式详解

    文章目录 @[toc] C++的三种继承方式详解以及区别 前言 一.public继承 二.protected继承 三.private继承 四.三者区别 五.总结 后话 C++的三种继承方式详解以及区别 ...

  2. oracle if=,oracle中if/else的三种实现方式详解

    1.标准sql规范 1.单个IF IF v=... THEN END IF; 2.IF ... ELSE IF v=... THEN ELSE t....; END IF; 3.多个IF IF v=. ...

  3. python的等待代码是什么_Python selenium 三种等待方式详解

    1.目的背景 解决问题:下拉框定位不到.弹框定位不到-各种定位不到,其实大多数情况下就是两种问题:1 有frame,2 没有加等待. 原因:代码运行速度快,而浏览器加载渲染速度慢 解决办法:加等待,目 ...

  4. asp.net Session在web.config中的三种配置方式——详解

    这段代码就是设置session在web.config中的存储方式. < sessionState mode="Off|InProc|StateServer|SQLServer" ...

  5. 飞畅科技-交换机的三种交换方式详解

    交换机是一种用于电(光)信号转发的网络设备,它可以为接入交换机的任意两个网络节点提供独享的电信号通路.交换机拥有一条高带宽的背部总线和内部交换矩阵,在同一时刻可进行多个端口对之间的数据传输,交换机的传 ...

  6. python三种等待方式_Python selenium 三种等待方式详解

    本文摘自:http://blog.csdn.net/huilan_same/article/details/52544521 发现太多人不会用等待了,博主今天实在是忍不住要给大家讲讲等待的必要性. 很 ...

  7. 网站分析数据(即用户行为数据)的三种收集方式详解

    回顾网站数据分析历史,从"您是第***位来访用户"到现在百家齐放的专业工具提供商,网站分析已经逐渐发展衍化成一门科学.但面对形态各异的分析数据,很多人仍然困惑于数据的来源,了解数据 ...

  8. c mysql5.7_CentOS7下MySQL5.7的三种安装方式详解

    操作系统环境: CentOS 7.4最小化安装 [root@node3 src]# cat /etc/redhat-release CentOS Linux release 7.4.1708 (Cor ...

  9. maven三种打包方式详解

    目录 maven常用打包命令 1 方法一:使用maven-jar-plugin和maven-dependency-plugin插件打包 2 方法二:使用maven-assembly-plugin插件打 ...

最新文章

  1. Nature Genetics:微生物基因组如何适应植物?(news views)
  2. 剑指offer:两个链表的第一个公共结点
  3. 14岁上中科大、23岁博士毕业的袁岚峰,现在因“简单科普”上热搜,本人回应:科普和科研一样重要...
  4. MATLAB图像函数以及应用(第六章)边界问题
  5. SOPC第三课---同时点亮4个LED灯闪烁
  6. 1108D. Diverse Garland
  7. 跟小静学MVC3[01]--创建第一个MVC3项目
  8. 分布式事务与2PC、3PC理论详解
  9. 两种模式的资源管理器代码之———— 删除文件夹
  10. 示例项目:简单的六足步行者
  11. php讲一个数组分割成字符串,PHP 分割字符串函数把字符串分割成数组示例
  12. 路由器和交换机的原理
  13. 批量提取网页中的超链接
  14. php控制wifi上网时长,腾达路由器家长控制功能怎么控制孩子上网时间
  15. 奈奎斯特采样定理粗略推导
  16. 【前端技术】一篇文章搞掂:WeX5
  17. 计算机基础知识文件的复制移动,如何复制文件
  18. 【计算机网络】-TCP的拥塞控制及拥塞控制方法
  19. MongoDB最新最佳连接工具:Robo 3T
  20. IDEA+MySQL+JavaFX之通讯录系统

热门文章

  1. 355 Design Twitter
  2. c# 窗体控件上绘制跟随鼠标的十字线
  3. MIPI DCS介绍
  4. postek二次开发_使用PX4的ECL进行多传感器数据融合的后处理
  5. 怎么恢复已损坏的文件?
  6. 食品批发销售必用的仓库进销存系统?
  7. matlab录音加入白噪声,matlab加入白噪声
  8. win11输入法处于中文状态打字仍是英文解决办法
  9. OFCMS 模板开发手册 java 版cms系统
  10. 赤菟开发板(CH32V307VCT6)实现流水灯