遍历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)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • Mac激活idea【2021免费激活】

    (Mac激活idea)本文适用于JetBrains家族所有ide,包括IntelliJidea,phpstorm,webstorm,pycharm,datagrip等。IntelliJ2021最新激活注册码,破解教程可免费永久激活,亲测有效,下面是详细链接哦~https://javaforall.net/100143.html…

    2022年3月29日
    313
  • Discuz二次开发相应知识点

    Discuz二次开发相应知识点“Discuz”在下文中简称“DZ”。要弄DZ二次开发,必须至少具备如下技能:1)能够理很好理解MVC构架的原理(虽然DZ不是MVC架构的)2)扎实的PHP基础,熟悉结构化程序,OOP程序的写法及应用3)熟悉MYSQL就用,掌握SQL语言,懂SQL优化者更佳4)熟悉使用Discuz的各项功能一)Discuz的文件系统目录注:想搞DZ开发,就得弄懂DZ中每个文件的功能。

    2022年5月19日
    37
  • iapp邮箱钓鱼源码制作_充值钓鱼网站源码

    iapp邮箱钓鱼源码制作_充值钓鱼网站源码文件名称:php下载收藏√[54321]开发工具:PHP文件大小:1715KB上传时间:2015-11-13下载次数:0提供者:fgg详细说明:最新qq钓鱼空间php源码需要修改数据库连接-Needtomodifytheconnection文件列表(点击判断是否您需要的文件,如果是垃圾请在下面评价投诉):最新空间php源码\test\1.s…

    2022年8月24日
    5
  • ubuntu16.04修改用户名和密码_网络设置的用户名和密码

    ubuntu16.04修改用户名和密码_网络设置的用户名和密码1、修改密码(1)进入Ubuntu,打开终端,输入:sudosu转为root用户;(2)输入:sudopasswduser(user是对应的用户名);(3)输入新密码,确认密码;(4)修改密码成功,重启,输入新密码进入Ubuntu;2、修改主机名(1)修改hostname文件输入:sudovim/etc/hostname,把旧主机名修改为新主机名;(2)修改hosts文件输入:sudovim/etc/hosts,把旧主机名修…

    2022年9月29日
    3
  • vue 路由嵌套_vuejs直接打开第三级路由

    vue 路由嵌套_vuejs直接打开第三级路由嵌套路由有时候在路由中,主要的部分是相同的,但是下面可能是不同的。比如访问首页,里面有新闻类的/home/news,还有信息类的/home/message。这时候就需要使用到嵌套路由。项目结构如下:

    2022年8月7日
    9
  • redis常见使用场景下PHP实现

    redis常见使用场景下PHP实现

    2021年10月10日
    39

发表回复

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

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