关于从集合List中移除元素

2024-08-22 07:38
文章标签 元素 list 集合 移除

本文主要是介绍关于从集合List中移除元素,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

当我们想从List集合中移除某些元素的时候,一般会想到List集合中的remove方法,所以有的人会起初使用如下的方式从集合中移除元素:

 List<Integer> listInteger = new ArrayList<Integer>();listInteger.add(1);listInteger.add(2);listInteger.add(3);listInteger.add(4);System.out.println(listInteger);for(Integer i:listInteger){if(i == 1  ||  i == 3){listInteger.remove(i);}}System.out.println(listInteger);

上面的代码表示在一个listInteger集合中,添加四个元素,然后循环该集合,如果元素的值为1或者3(此处存在自动拆箱将Integer拆箱为int类型做比较)就需要移除掉该元素从集合中,但是这种做法得不到效果反而会报错,异常信息如下所示:

java.util.ConcurrentModificationExceptionat java.base/java.util.ArrayList$Itr.checkForComodification(ArrayList.java:1042)at java.base/java.util.ArrayList$Itr.next(ArrayList.java:996)at com.java.lee.ReferenceTest.main(ReferenceTest.java:39)

出现这个错误的原因是因为移除元素的方式不对,那么如何解决从List中移除元素这种问题呢?

下面给出两种解决方法:

方法一:将要移除的元素放到一个新的List集合中,然后从原有的集合中调用removeAll(Collection<?> c)方法 这样可以成功移除,示例代码如下:

 List<Integer> listInteger = new ArrayList<Integer>();listInteger.add(1);listInteger.add(2);listInteger.add(3);listInteger.add(4);System.out.println(listInteger);List<Integer> removeList = new ArrayList<Integer>();for(Integer i:listInteger){if(i == 1  ||  i == 3){//listInteger.remove(i);removeList.add(i);}}listInteger.removeAll(removeList);System.out.println(listInteger);

需要注意的是上述的removeAll方法的参数不可以为null,所以如果要使用该方法首先判断一下参数否为为removeList!=null && removeList.size()>0

运行结果如下所示:

[1, 2, 3, 4]
[2, 4]

方法二:使用Iterator来进行迭代,在该迭代中使用remove()方法,示例代码如下:

List<YmVo> list = new ArrayList<YmVo>();YmVo vo = new YmVo();vo.setYmzl("01");vo.setYmjc("1");list.add(vo);YmVo vo1 = new YmVo();vo1.setYmzl("02");vo1.setYmjc("1");list.add(vo1);for (YmVo v:list) {System.out.print(v.getYmzl()+ " ");}System.out.println();System.out.println("--------------------------------");for (Iterator<YmVo> iter = list.listIterator(); iter.hasNext(); ) {YmVo a = iter.next();if ("01".equals(a.getYmzl())) {iter.remove();}}for (YmVo v:list) {System.out.println(v.getYmzl()+ " ");}
public class YmVo {private String ymzl;private String ymjc;public String getYmzl() {return ymzl;}public void setYmzl(String ymzl) {this.ymzl = ymzl;}public String getYmjc() {return ymjc;}public void setYmjc(String ymjc) {this.ymjc = ymjc;}
}

运行结果如下:

01 02 02

上面是我关于从 List集合中移除元素的两种方法实践的总结。

在这里插入图片描述

这篇关于关于从集合List中移除元素的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1095655

相关文章

Java中的数组与集合基本用法详解

《Java中的数组与集合基本用法详解》本文介绍了Java数组和集合框架的基础知识,数组部分涵盖了一维、二维及多维数组的声明、初始化、访问与遍历方法,以及Arrays类的常用操作,对Java数组与集合相... 目录一、Java数组基础1.1 数组结构概述1.2 一维数组1.2.1 声明与初始化1.2.2 访问

C# 比较两个list 之间元素差异的常用方法

《C#比较两个list之间元素差异的常用方法》:本文主要介绍C#比较两个list之间元素差异,本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友参考下吧... 目录1. 使用Except方法2. 使用Except的逆操作3. 使用LINQ的Join,GroupJoin

关于集合与数组转换实现方法

《关于集合与数组转换实现方法》:本文主要介绍关于集合与数组转换实现方法,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录1、Arrays.asList()1.1、方法作用1.2、内部实现1.3、修改元素的影响1.4、注意事项2、list.toArray()2.1、方

python3如何找到字典的下标index、获取list中指定元素的位置索引

《python3如何找到字典的下标index、获取list中指定元素的位置索引》:本文主要介绍python3如何找到字典的下标index、获取list中指定元素的位置索引问题,具有很好的参考价值,... 目录enumerate()找到字典的下标 index获取list中指定元素的位置索引总结enumerat

CSS实现元素撑满剩余空间的五种方法

《CSS实现元素撑满剩余空间的五种方法》在日常开发中,我们经常需要让某个元素占据容器的剩余空间,本文将介绍5种不同的方法来实现这个需求,并分析各种方法的优缺点,感兴趣的朋友一起看看吧... css实现元素撑满剩余空间的5种方法 在日常开发中,我们经常需要让某个元素占据容器的剩余空间。这是一个常见的布局需求

C#之List集合去重复对象的实现方法

《C#之List集合去重复对象的实现方法》:本文主要介绍C#之List集合去重复对象的实现方法,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录C# List集合去重复对象方法1、测试数据2、测试数据3、知识点补充总结C# List集合去重复对象方法1、测试数据

Python中合并列表(list)的六种方法小结

《Python中合并列表(list)的六种方法小结》本文主要介绍了Python中合并列表(list)的六种方法小结,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋... 目录一、直接用 + 合并列表二、用 extend() js方法三、用 zip() 函数交叉合并四、用

Java List排序实例代码详解

《JavaList排序实例代码详解》:本文主要介绍JavaList排序的相关资料,Java排序方法包括自然排序、自定义排序、Lambda简化及多条件排序,实现灵活且代码简洁,文中通过代码介绍的... 目录一、自然排序二、自定义排序规则三、使用 Lambda 表达式简化 Comparator四、多条件排序五、

Java使用Stream流的Lambda语法进行List转Map的操作方式

《Java使用Stream流的Lambda语法进行List转Map的操作方式》:本文主要介绍Java使用Stream流的Lambda语法进行List转Map的操作方式,具有很好的参考价值,希望对大... 目录背景Stream流的Lambda语法应用实例1、定义要操作的UserDto2、ListChina编程转成M

如何高效移除C++关联容器中的元素

《如何高效移除C++关联容器中的元素》关联容器和顺序容器有着很大不同,关联容器中的元素是按照关键字来保存和访问的,而顺序容器中的元素是按它们在容器中的位置来顺序保存和访问的,本文介绍了如何高效移除C+... 目录一、简介二、移除给定位置的元素三、移除与特定键值等价的元素四、移除满足特android定条件的元