遍历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]

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

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

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

【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛

【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...

(0)


相关推荐

  • 域名绕过备案使用国内服务器_如何查看服务器的端口

    域名绕过备案使用国内服务器_如何查看服务器的端口现今,互联正成为企业的竞争优势。然而,受限于跨运营商集成挑战、品质参差不齐,以及冗长的网络供应时间等,使得企业无法在数字经济中,实现强而有力的竞争。天下数据免备案CDN平台,为企业提供灵活的“一站式海外免备案CDN解决方案”。让企业提高全球用户的访问体验、创造新的价值。免备案CDN的原理免备案CDN加速原理是将源站内容分发至海外多个高防服务器节点,通过智能管理系统对网络流量分配控制,使用户从…

  • mpvue flyio「建议收藏」

    mpvue flyio「建议收藏」https://blog.csdn.net/qq_34239734/article/details/88836320不用改这个,如果改第一个,那么就自动改第二个了在main.js中代码如下importflyfrom’./utils/request’//将fly挂载在全局Vue.prototype.$fly=flyutil…

  • MAC-npm更新版本「建议收藏」

    参考连接:参考连接运行下面的命令,查看npm可更新的版本:npm-goutdated输入一下命令,更新对应的版本:sudonpm-ginstallnpm@4.4.4在这里安装可能会报错:ENOTEMPTY:directorynotempty,rename’/usr/local/lib/node_modules/npm’->’/usr/local/lib/no

  • 左值和右值、左值引用与右值引用、移动语句(2)「建议收藏」

    以下来自IBM知识中心表达式可以分为以下值类别之一:左值Lvalue:如果表达式不是const限定的,则表达式可以出现在赋值表达式的左侧。 x值:要过期的右值引用。 右值(Prvalue)rvalue:非xvalue表达式,仅出现在赋值表达式的右侧。Rvalues包括xvalues和prvalues。Lvalues和xvalues可以称为glvalues。Note:类(p…

  • MD5加密详解

    MD5加密详解MD5加密详解加密过程:密码:123456(明文形式)—–>加密后49ba59abbe56e0571.密码在请求提交后到达控制器2.到达控制后通过加密规则,转换成密文3.在经过DAO查询与数据库中已经存在的密文密码比对是否一直,一致,则放行。用户注册密码时是加密存储的用户修改密码时,也需要进行加密存储加密规则:加密规则可以自定义,在项目中通常使用BASE64和MD5,本文使用的加密规则就是MD5,BASE64:可反编码的编码方式​

  • mysql联合主键

    mysql联合主键1、hibernate配置联合主键1.1联合主键的好处:联合主键的好处是不需要因为需要主键而增加一个无用的主键列1.2联合主键的建表语句CREATETABLE`HTTP_TERMINAL_DETAIL_STATISTICS`( `TIME`CHAR(14)NOTNULLCOMMENT’时间’, `TERMINAL_TYPE`VARCHAR(128)NOTNULLCO…

发表回复

您的电子邮箱地址不会被公开。

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