在Java编程中,我们经常需要对数据结构进行遍历操作,并根据业务需求删除部分元素。而数组列表(ArrayList)是集合类中的一种,它可以动态地添加和删除元素,非常适合在程序中使用。本篇博客将总结ArrayList中的两种遍历和删除元素的方式。

在下面的示例代码中,我们先定义了一个ArrayList对象,并向其中添加了若干个字符串元素:

ArrayList<String> list = new ArrayList<>();
list.add("a");
list.add("b");
list.add("b");
list.add("b");
list.add("c");
list.add("d");
list.add("f");

接下来,我们将采用两种方式来遍历并删除ArrayList中的元素。

  1. 使用Iterator迭代器遍历和删除元素:

使用ArrayList的iterator()方法可以返回一个实现了Iterator接口的迭代器对象。因为Iterator接口中提供了remove()方法,所以通过Iterator迭代器可以方便地遍历并删除ArrayList中的元素。

以下是使用迭代器遍历和删除元素的代码:

Iterator<String> it = list.iterator();
while(it.hasNext()){
String s = it.next();
if("b".equals(s)){
it.remove();
}
}

这里通过调用ArrayList对象的iterator()方法获取一个实现了Iterator接口的迭代器对象it,然后使用while循环和hasNext()方法遍历集合中的元素,如果值等于"b",则调用remove()方法将其从集合中删除。

  1. 使用普通for循环遍历和删除元素:

由于ArrayList是一个基于数组实现的数据结构,因此可以使用普通的for循环来遍历和删除其中的元素。由于删除元素后,原本在这个位置之后的元素都要往前移动一位,所以需要注意修改下标的值,否则会出现数据丢失或IndexOutOfBoundsException等异常情况。

以下是使用普通for循环遍历和删除元素的代码:

for(int i=0;i<list.size();i++){
if("b".equals(list.get(i))){
list.remove(i);
i--;
}
}

这里通过size()方法获取ArrayList中元素的数量,并使用普通的for循环遍历集合,如果当前元素的值等于"b",则调用remove()方法将其从集合中删除,同时将下标减1。

最终,我们可以使用以下两个方法来测试上述逻辑:

public static void main(String[] args)  {
ArrayList<String> list = new ArrayList<>();
list.add("a");
list.add("b");
list.add("b");
list.add("b");
list.add("c");
list.add("d");
list.add("f"); Iterator<String> it = list.iterator();
while(it.hasNext()){
String s = it.next();
if("b".equals(s)){
it.remove();
}
} System.out.println(list); for(int i=0;i<list.size();i++){
if("b".equals(list.get(i))){
list.remove(i);
i--;
}
} System.out.println(list);
}

以上就是关于Java中ArrayList的遍历和删除元素的两种方式的总结。

今后会将总结一些常用的遍历方法,便于以后工作学习使用。

Java中ArrayList的遍历与删除元素方式总结的更多相关文章

  1. Java中ArrayList循环遍历并删除元素的陷阱

    ava中的ArrayList循环遍历并且删除元素时经常不小心掉坑里,昨天又碰到了,感觉有必要单独写篇文章记一下. 先写个测试代码: import java.util.ArrayList; public ...

  2. 【转】ArrayList循环遍历并删除元素的常见陷阱

    转自:https://my.oschina.net/u/2249714/blog/612753?p=1 在工作和学习中,经常碰到删除ArrayList里面的某个元素,看似一个很简单的问题,却很容易出b ...

  3. ArrayList循环遍历并删除元素的常见陷阱

    在工作和学习中,经常碰到删除ArrayList里面的某个元素,看似一个很简单的问题,却很容易出bug.不妨把这个问题当做一道面试题目,我想一定能难道不少的人.今天就给大家说一下在ArrayList循环 ...

  4. ArrayList循环遍历并删除元素的几种情况

    如下代码,想要循环删除列表中的元素b,该怎么处理? public class ListDemo { public static void main(String[] args) { ArrayList ...

  5. Java HashMap 如何正确遍历并删除元素

    (一)HashMap的遍历 HashMap的遍历主要有两种方式: 第一种采用的是foreach模式,适用于不需要修改HashMap内元素的遍历,只需要获取元素的键/值的情况. HashMap<K ...

  6. Java中ArrayList边遍历边修改

    用for-each 边遍历ArrayList 边修改时: public static void main(String[] args) { ArrayList<String> list = ...

  7. 【Java】List遍历时删除元素的正确方式

    当要删除ArrayList里面的某个元素,一不注意就容易出bug.今天就给大家说一下在ArrayList循环遍历并删除元素的问题.首先请看下面的例子: import java.util.ArrayLi ...

  8. 【原理探究】女朋友问我ArrayList遍历时删除元素的正确姿势是什么?

    简介 我们在项目开发过程中,经常会有需求需要删除ArrayList中的某个元素,而使用不正确的删除方式,就有可能抛出异常.或者在面试中,会遇到面试官询问遍历时如何正常删除元素.所以在本篇文章中,我们会 ...

  9. java list集合遍历时删除元素

    转: java list集合遍历时删除元素 大家可能都遇到过,在vector或arraylist的迭代遍历过程中同时进行修改,会抛出异常java.util.ConcurrentModification ...

  10. JAVA List 一边遍历一边删除元素

    JAVA List 一边遍历一边删除元素,报java.util.ConcurrentModificationException异常 2015年02月10日 14:42:49 zhanzkw 阅读数:3 ...

随机推荐

  1. “&”控制命令的运行方式

    在Unix.Linux和类Unix系统中,& 符号有特定的意义,用于控制命令的运行方式.具体来说,& 在命令末尾使用时表示将该命令放入后台运行. 前台运行: 如果你在终端输入一个命令, ...

  2. WPF 笔迹算法 从点集转笔迹轮廓

    本文将告诉大家一些笔迹算法,从用户输入的点集,即鼠标轨迹点或触摸轨迹点等,转换为一个可在界面绘制显示笔迹画面的基础数学算法.尽管本文标记的是 WPF 的笔迹算法,然而实际上本文更侧重基础数学计算,理论 ...

  3. oracle命令3 冷备份

    用户管理的备份:备份脚本要自己写:备份哪些文件要自己选:恢复时要复制那些文件自己判断:恢复需要的日志,自己找: 备份,需要备份保存关键SCN信息的文件:一次完成的备份包括:控制文件,数据文件,日志文件 ...

  4. Vue项目打包为桌面应用

    vue项目首先使用 npm run build 打包为dist文件后,进入dist目录得到如下文件:就是打包后的html+css+js+static 新建一个deskapp文件夹,里面在新建一个App ...

  5. 钉钉OA自定义审批流的创建和使用

    前言 大家好!我是sum墨,一个一线的底层码农,平时喜欢研究和思考一些技术相关的问题并整理成文,限于本人水平,如果文章和代码有表述不当之处,还请不吝赐教. 钉钉作为一款办公软件,审批功能是它的核心功能 ...

  6. RLChina2022公开课-博弈搜索算法

    序列决策 序列决策问题一般用马尔可夫决策模型进行描述 搜索算法的优化

  7. Unity3D 选择焦点切换

    using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.T ...

  8. 一个基于Vue模型的表单生成器

    哈喽,我是老鱼,一名致力于在技术道路上的终身学习者.实践者.分享者! Vuetify Form Base是一个基于模型的表单生成器,目的是提供一个工具,以便以较少的努力从任何模型数据生成可编辑的表单, ...

  9. Ubuntu18虚拟机远程开发

    Ubuntu18 虚拟机远程开发 1. 安装 VMware 和 Ubuntu18 虚拟机 (1)VMware 官网上下载免费版本 一路 next 安装就行(中间也许需要改一下存放路径) (2)Ubun ...

  10. bool数据类型用法

    1 来自百度 1.bool为布尔型用作逻辑判断 2 2.bool只有一个字节 3 3.bool取值false和true,0为false,非0为true.(例如-1和2都是true). 4 4.bool ...