犯了一个菜鸟必备的很郁闷的错误:for循环删除LinkedList集合中元素

ArrayList在for循环中使用remove方法移除元素方法介绍 主要介绍了ArrayList在for循环中使用remove方法移除元素的内容,介绍了具体代码实现,需要的朋友可以参考下。 立即下载

删除集合中的元素和自己想的不一样,代码片段:

private final LinkedList<Boolean> selected = new LinkedList<Boolean>();
public LinkedList<Boolean> getSelect() {
	return selected;
}

for (int i = 0; i < adapter.getSelect().size(); i++) {
	System.out.println(i+"|" + adapter.getSelect().get(i));
	if(adapter.getSelect().get(i)){
		adapter.getSelect().remove(i);
		list.remove(i);
	}
}

每次删除都不是自己想要的,总是少删除,正了整个半天,郁闷了一天。菜鸟啊,太菜...

第一次循环是对的,删除某个元素后,adapter.getSelect().size()的值会跟着减少,此时再执行删除会删除以为删除的后面一个元素而跳过以为要删除的,简单修改一下:

for (int i = 0; i < adapter.getSelect().size(); ) {
	System.out.println(i+"|" + adapter.getSelect().get(i));
	if(adapter.getSelect().get(i)){
		adapter.getSelect().remove(i);
		list.remove(i);
	} else {
		i++;
	}
}

在此标记下,以后不要再犯!

java中for循环删除集合陷阱 java中在增强for循环为什么不能增删集合呢?一个循环迭代,跟集合的增删改没什么关系。修改集合不是for去做的。for只管循环迭代,你在循环里边修改集合,改变集合的长度,顺序对循环都有影响 立即下载

相关推荐

别再为环保数采仪通讯发愁!手把手教你用MCGS触摸屏+4G模块发送HJ212报文

本文详细介绍了如何使用MCGS触摸屏配合4G模块高效发送HJ212标准报文,解决工业环保监测中的数据采集与传输难题。从硬件连接到软件配置,再到报文组装与发送策略,提供全流程实用指南,特别针对4G网络环境下的特殊设置给出优化建议,帮助工程师提升数据传输稳定性与效率。

weixin_30847865的博客 389

LinkedList,ArrayList在foreach循环遍历时可以删除元素!!!

ArrayList是java开发时非常常用的类,常碰到需要对ArrayList循环删除元素的情况。这时候大家都不会使用foreach循环的方式来遍历List,因为它会抛java.util.ConcurrentModificationException异常。比如下面的代码就会抛这个异常: List list = new ArrayList(); list.add

u014096215的专栏 6355

学习使用turtlebot2——ROS上安装turtlebot2

安装环境:    安装Ubuntu 14.04版本和ROS Indigo    参考:http://wiki.ros.org/turtlebot/Tutorials安装步骤    有两种安装方法,一种直接的安装命令,另外一种源码编译安装,区别在于:直接安装命令是安装在电脑默认路径/opt/ros/indigo/share里面不便于更改代码,因为默认路径下文件一般有访问权限,无法直接更改,需要使用s...

weixin_42670641的博客 2532

v-for解决数据渲染刷新问题

1.对渲染的每条数据绑定一个key,使得缓存强制刷新,不能使用index作为key ```html <div id="app"> <form> <input type="text" v-model="name"> <input @click.prevent="addPerson" type="submit" value="添加"> </form> &l

qq1067012060的博客 2154

[VT虚拟化驱动]利用EPT实现无痕HOOK

本章利用讲EPT无痕HOOK

吾无法无天的博客 1万+

Python 中 dpkt 库的详细使用指南(强大的 Python 数据包解析库)

dpkt 是一个功能强大的 Python 网络数据包解析库,支持解析和构造以太网、IP、TCP/UDP 等多种协议的数据包。其核心功能包括解析各层协议头部、读写 pcap 文件、构造自定义数据包及分析 HTTP 流量等。dpkt 提供简单易用的 API,适用于网络分析、安全研究和流量监控场景。优化技巧包括数据包过滤、批量处理和选择性解析以提高性能,常见问题如数据不完整或协议识别错误可通过异常处理和字段验证解决。典型应用场景涵盖协议分析、网络调试和自定义数据包生成。

数据知道的博客 1万+

ArrayList与LinkedList循环删除元素浅谈

一、List删除元素方式 List接口当中主要提供了下列两种方法删除元素 //索引删除 E remove(int index); //直接元素删除 boolean remove(Object o); 继承 Iterable<T> 中Iterator<T> iterator() 接口提供删除方法,remove方法需要子类实现 default vo...

AthlonCC的博客 2961

微信小程序 - 最新详细实现模板消息订阅通知功能,给用户微信发送“服务通知“模板消息并点击进入跳转到小程序页面路由,订阅消息通知详细后台申请流程及示例代码,解决授权申请弹框被拒绝后无法调起、常见报错!

微信小程序,vue2,vue3,模板消息,订阅通知,服务通知,小程序模板通知,订阅微信模板消息功能,唤起模板消息订阅弹框并发送服务通知,消息订阅与模板消息发送,一次性订阅,长期永久订阅,申请模板id,详细示例代码教程,配置流程,消息模板,模板ID,用户收不到消息,订阅了通知但微信不来服务通知,报错,小程序平台模板消息订阅功能,唤起订阅模板消息弹框,订阅模板消息发送服务通知功能,如何做模板消息订阅,一直收不到通知,用户通过弹窗订阅,订阅消息,无法打开申请授权弹框,用户拒绝/关闭后,如何引导用户再开启,拒绝后怎

🏆 前端领域优质创作者 5331

Java中LinkedList删除元素

今天敲代码看到一个例子,在迭代器遍历的时候插入元素报错,有提到原因,但没有提到删除元素的方法,就自己试了一下。import java.util.*; public class IteratorTest { public static void main(String[] args) { List&lt;String&gt; ll = new LinkedList&lt;String&g...

JFBom的博客 2万+

华为OD机试真题 新系统2026-04-01 Python&JS【计算数列位置N的值】

如果其前面的M个元素中,存在值相同的元素,则该位置上的数值等于前面M个数中最大的数值与最小的数值之如果其前面的M个元素中,不存在值相同的元素,则该位置上的数值等于前面M个数中最大的数值与最小的数值之差;1、输入M、N两个数,则按照以下规则形成一个数列;两个整数,用逗号分割,分别表示M和N。一个整数,表示数列第N个位置上的数值。2、数列的前M个元素的值为1到M;请计算该数列第N个位置上的数值。N取值范围:1<= N<=50。M取值范围:3<=M<=10。

MISAYAONE的博客 3252

汽车UDS诊断详解及Vector相关工具链使用说明——1.1 应用层协议整体介绍

本文我们先从整体的维度来介绍一下应用层协议,每个UDS服务都遵循本文中的协议。 一、SI(Service ID) SI是UDS指令的第一个字节,我们第一篇文章中提到的10等服务就是指这个服务的SI=0x10,它是服务的标识,每个服务的SI都是唯一的。 ...

weixin_42967006的博客 5476

ArrayList与LinkedList的遍历删除元素方法

ArrayList与LinkedList的遍历删除元素方法List的遍历删除元素方法示例ArrayListfor loop(从后往前)Iteratorfor each(不可使用)(fail-fast 机制)removeIfstream().filter():LinkedList的遍历删除元素方法与ArrayList的区别 List的遍历删除元素方法 示例ArrayList 首先使用ArrayList的构造方法生成一个List实例list: List<String> list = new Arr

itigoitie的博客 1975

【Python】no module named distutils问题怎么解决-Numpy 启动时报错:缺少 distutils 模块的解决方法

看distutils这个名字,似乎是什么通用模块,可能不一定是numpy的问题。

每日出拳老爷子的博客 6002

ArrayList和LinkedList的循环删除问题

ArrayList底层是数组实现的,如果把某个元素删除之后,数组会进行重组,这个时候数组的长度会发生变化,如果还根据for循环i++的下标访问会出现问题。默认是空数组,在添加元素时,会判断这个大小跟10的关系,如果小于10,数组大小直接为10。读者若直接复制代码,执行时,需从三个方法中选一个,另外两个注释掉。此后,发现数组满了之后,会扩大为原来的1.5倍。即:原数组大小+原数组大小的一半。

fendouderen的博客 903

复分析 阿尔福斯(Ahlfors) 第三版答案 英文

答案分为十章,有部分习题没有答案,全英文复分析阿尔福斯(Ahlfors) 第三版答案

SAP B1中文培訓教材_SDK

公司内部培训资料,对开发工具 ,DIAPI, UIAPI,Add-ON有详细解说

存储QQ号码

存储QQ号码 ​ 已知数组存放一批 QQ 号码,长度 5-11 位,String[] strs = {“10001”,“10086”,“12347806666”,“45612378901”,“10001”,“12347806666”}。将该数组里面的所有 qq 号都存放在 LinkedList 中,将 list 中重复元素删除,将 list 中所有元素分别用迭代器和增强 for 循环打印出来。 // An highlighted block public class QQ { public stat

qq_45647939的博客 491

C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片

基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正

list集合删除最后一个元素

list.remove(list.size() - 1)

qq_43842093的博客 1万+

RU DOS版、EFI版32bit/64bit BIOS常用工具

DOS版、EFI版的RU工具,可用来查看IO、MEM、PCI、SMBIOS等资源。亲测在EFI SHELL下可用。

LinkedList中的remove方法

实在是太坑爹了!!!!!jdk7的api里面,他有三个remove方法 return type method Description E remove() Retrieves and removes the head (first element) of this list. E remove(int index) Removes the element at th

93吸血鬼的学习笔记 1万+

Remove Linked List Elements(移除列表中指定的元素)

Remove all elements from a linked list of integers that have value val.ExampleGiven: 1 --&gt; 2 --&gt; 6 --&gt; 3 --&gt; 4 --&gt; 5 --&gt; 6, val = 6Return: 1 --&gt; 2 --&gt; 3 --&gt; 4 --&gt; 5/** *...

LHN112233的博客 927

LinkedList集合对元素进行增、查、删操作

ArrayList集合在查询元素时速度很快,但在增删元素时效率较低,为了克服这种局限性,可以使用List接口的另一个实现类LinkedList。LinkedList集合内部包含有两个Node类型的first和last属性维护一个双向循环链表,在链表中的每一个元素都使用引用的方式来记住它的前一个元素和后一个元素,从而可以将所有的元素彼此连接起来。当插入一个新元素时,只需要修改元素之间的这种引用关系即可,删除一个节点也是如此。正因为这样的存储结构,所以LinkedList集合对于元素的增删操作表现出很高的效率,

zy1992As的博客 889

正确删除list的元素

如何正确遍历删除List中的元素,你会吗?遍历删除List中的元素有很多种方法,当运用不当的时候就会产生问题。下面主要看看以下几种遍历删除List中元素的形式:1.通过增强的for循环删除符合条件的多个元素2.通过增强的for循环删除符合条件的一个元素3.通过普通的for删除删除符合条件的多个元素4.通过Iterator进行遍历删除符合条件的多个元素 [java] view plain copy/...

人生最遗憾的莫过于:轻易地放弃了不该放弃的,固执地坚持了不该坚持的 1万+

关于数据LinkedList的removefirst出错

关于数据LinkedList的removefirst出错我有一段这样的代码: Java codeprivate LinkedList freeCon = new LinkedList(); public  Connection getConn() { Connection re = null; if(freeCon.size()>0) { try { re = freeCon.getFirst

源创部落 2200

foreach中移除(remove)元素 问题汇总

1,ArrayList 移除元素时,有时候报错,有时候不报错List&lt;String&gt; a = new ArrayList&lt;&gt;(); a.add("1"); a.add("2"); for (String temp : a) { if("1".equals(temp)){ ...

tmplayer的博客 1万+

使用Websocket实现消息推送(上)

WebSocket一种在单个 TCP 连接上进行全双工通讯的协议。WebSocket通信协议于2011年被IETF定为标准RFC 6455,并被RFC7936所补充规范,WebSocketAPI被W3C定为标准。

ttdevs 3万+
上一篇: android下拉刷新,上拉获取更多
下一篇: 自定义listview,带按钮,多选框,处理item事件
ttdevs
博客等级 码龄15年 388粉丝 91原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值