遍历ArrayList时如何正确移除一个元素「建议收藏」

遍历ArrayList时如何正确移除一个元素「建议收藏」一个ArrayList对象aList中存有若干个字符串元素,现欲遍历该ArrayList对象,删除其中所有值为”abc”的字符串元素,请用代码实现。方法一、for循环遍历很简单,直接上代码:importjava.util.*;publicclassTest1{ publicstaticvoidmain(Stringargs[]){ List<String…

大家好,又见面了,我是你们的朋友全栈君。

一个ArrayList对象aList中存有若干个字符串元素,现欲遍历该ArrayList对象,删除其中所有值为”abc”的字符串元素,请用代码实现。

方法一、for循环遍历

很简单,直接上代码:

import java.util.*;
public class Test1{
	public static void main(String args[]) {
		List<String> aList = new ArrayList();
		aList.add("a");
		aList.add("ab");
		aList.add("abc");
		aList.add("abc");
		aList.add("abcr");
		aList.add("abc");
		aList.add("abcf");
		aList.add("abc");
		aList.add("abdc");
		
//      删除过程
//		aList.add("a");
//		aList.add("ab");
//		
//		aList.add("abc");
//		aList.add("abcr");
//		
//		aList.add("abcf");
//		
//		aList.add("abdc");


		for(int i=0;i<aList.size();i++) {
			if(aList.get(i).equals("abc")) {
				System.out.println(i+":"+aList.get(i));
				aList.remove(i);  // 删除后 下标调整 导致漏删
			}
		}
		System.out.println(aList);
			
	}
}

结果:

2:abc
4:abc
5:abc
[a, ab, abc, abcr, abcf, abdc]

方法二、迭代遍历

import java.util.*;
public class Test1{
	public static void main(String args[]) {
		List<String> aList = new ArrayList();
		aList.add("a");
		aList.add("ab");
		aList.add("abc");
		aList.add("abc");
		aList.add("abcr");
		aList.add("abc");
		aList.add("abcf");
		aList.add("abc");
		aList.add("abdc");
		
		
		Iterator<String> iter = aList.iterator();
		while(iter.hasNext()) {
			if(iter.next().equals("abc")) {
				iter.remove();
			}
		}
		System.out.println(aList);
		
		
		
	}
}

结果:

[a, ab, abcr, abcf, abdc]

为了避免漏删的情况,最好使用迭代器的方式遍历删除元素,因为迭代器是根据后一个索引来删除元素的,而不是下标。

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/163119.html原文链接:https://javaforall.net

(0)
上一篇 2022年7月22日 下午1:36
下一篇 2022年7月22日 下午1:46


相关推荐

  • 2018年最新Java面试题及答案整理

    2018年最新Java面试题及答案整理下列面试题都是在网上收集的,本人抱着学习的态度找了下参考答案,有不足的地方还请指正,更多精彩内容可以关注我的微信公众号:Java团长基础篇基本功面向对象特征封装,继承,多态和抽象 封装 封装给对象提供了隐藏内部特性和行为的能力。对象提供一些能被其他对象访问的方法来改 变它内部的数据。在Java当中,有3种修饰符:public,private和prote…

    2022年6月18日
    60
  • aiohttp的使用

    aiohttp的使用aiohttp 介绍 aiohttp 强调的是异步并发 提供了对 asyncio await 的支持 可以实现单线程并发 IO 操作 安装 pipinstallai 使用方法 1 普通发请求 importaiohtt asyncwithaio C

    2026年3月18日
    2
  • nagios配置文件介绍

    nagios配置文件介绍Nagios 配置文件简介 1 1 配置文件概述 nagios 安装完成后 配置文件在安装时放在了 usr local nagios etc 目录下 root Nagios Server ls l usr local nagios etc total88 rw rw r1nagiosnagi 09cg

    2026年3月19日
    1
  • [Go] Go语言实现post请求时发送header头信息[通俗易懂]

    [Go] Go语言实现post请求时发送header头信息[通俗易懂]有些接口需要增加header头信息,里面传递token,这个时候就要求在post的时候能传递自己的header信息funcPostHeader(urlstring,msg[]byte,headersmap[string]string)(string,error){client:=&http.Client{}req,err…

    2022年7月16日
    37
  • Graylog 部署文档

    Graylog 部署文档graylog 部署文档

    2026年3月19日
    2
  • C语言socket实现文件下载[通俗易懂]

    C语言socket实现文件下载[通俗易懂]是网络编程的作业,我比较菜。。。写到定位输出,做百分比出现了问题,不显示0到100的,直接从0跳到了100。请教了下大佬。改了过来。原来是类型的问题,做出来的运算应该是float,但是我都定义的int,输出也是,大佬指出后,我好尴尬。。。犯了小错误。。。但是在这次过程也学习了一波。要加油了!!!代码写的这么乱!!!写的是带颜色的版本,,颜色有可能会觉得妖艳,,,好吧。编译平台是vc++6.0

    2022年7月14日
    16

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号