在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. c语言代码练习2(1)

    //利用while循环计算1-10阶乘的和#define _CRT_SECURE_NO_WARNINGS 1 #include <stdio.h> int main( ) { int i ...

  2. Android news Display Owner Info on Your Android Device in Case It Gets Lost

    Display Owner Info on Your Android Device in Case It Gets Lost The latest versions of Android includ ...

  3. 几句话了解元数据(Metadata)

    元数据就是关于数据的数据(data about data),主要是描述数据属性(property)的信息,用来支持如指示存储位置.历史数据.资源查找.文件记录等功能. 要理解元数据,首先要知道&quo ...

  4. jmeter生成HTML性能测试报告(非GUI的命令)

    非GUI的命令(在cmd执行即可 不需要打开jmeter) 使用命令:jmeter  -n  -t  [jmx file]  -l  [jtl file]  -e  -o   [report path ...

  5. CF580B

    题目简化和分析: 选择 \(n\) 个朋友,满足以下条件: 工资差异 \(<d\) 友谊和最大(题目翻译不太清楚) 现在面临两个问题 求差异值 求友谊和 所以我们理应想到线段树双指针. 排序后满 ...

  6. acwing第75场周赛

    这次题比较水,但是还是没能ak,自己小结一下吧 第一道题就是自己枚举相加就行 第二道题是一个多关键字排序,wa了几次,是因为优先级有两个是相同的需要特判一下,然后可以把字符转化为数字的优先级,我用了一 ...

  7. Java中Synchronized的用法(转)

    原文:http://blog.csdn.net/luoweifu/article/details/46613015 作者:luoweifu 转载请标名出处 <编程思想之多线程与多进程(1)--以 ...

  8. sed 原地替换文件时遇到的趣事

    哈喽大家好,我是咸鱼 在文章<三剑客之 sed>中咸鱼向大家介绍了文本三剑客中的 sed sed 全名叫 stream editor,流编辑器,用程序的方式来编辑文本 那么今天咸鱼打算讲一 ...

  9. Spring系列:Spring6简介和基本使用

    一.概述 1.1 特点 Spring 是一款主流的 Java EE 轻量级开源框架 ,Spring 由"Spring 之父"Rod Johnson 提出并创立,其目的是用于简化 J ...

  10. 使用QPainter制作一个简易的相册

    PlayImage 记得一键三连哦 一个使用简单的QPainter绘图事件实现图片播放器的简易demo 支持图片切换 支持多路更新,自己扩展即可 支持幻灯片播放 PlayImage自定义控件支持复用, ...