Java 实例 - 数组差集
Java List.removeAll()方法:从列表中移除所有元素
该方法返回值为 boolean 对象,如果 List 集合对象由于调用 removeAll 方法而发生更改,则返回 true,否则返回 false。
示例
本示例使用 List 接口的实现类 ArrayList 初始化一个列表对象 list,并向该列表中添加 3 个元素,然后再初始化一个列表对象 list1,并向该列表中添加与 list 列表中相同的两个元素,最后调用 removeAll 方法从列表 list 中移除与列表 list1 相同的元素,并输出执行结果:
运行程序,从集合 list 中移除 list1 中的内容,遍历集合 list,结果为“从我做起”。
public static void main(String[] args){
List<String>list = new ArrayList<String>();
list.add("保护环境"); //向列表中添加数据
list.add("爱护地球"); //向列表中添加数据
list.add("从我做起"); //向列表中添加数据
List<String>list1 = new ArrayList<String>();
list1.add("保护环境"); //向列表中添加数据
list1.add("爱护地球"); //向列表中添加数据
boolean ret = list.removeAll(list1); //从list中移除与list1相同的元素
Iterator<String>it = list.iterator(); //创建迭代器
while(it.hasNext()){ //循环遍历迭代器
System.out.println(it.next()); //输出集合中元素
}
}
https://www.runoob.com/java/arrays-removeall.html
https://blog.csdn.net/weixin_43552143/article/details/124878630
removeAll引发得java.lang.UnsupportedOperationException异常
原因:Arrays.asList 方法的返回类型是ArrayList类型,该类型并不是java.util.ArrayList 而是 java.util.Arrays.ArrayList 是Arrays的内部类,该实现类AbstractList实现类,并没有实现removeAll方法,当调用removeAll时因为需要调用remove方法,但是java.util.Arrays.ArrayList中没有remove方法,会调用AbstractList的remove方法,就会抛出异常。
解决:
List<String> retailNoList = new ArrayList<>(Arrays.asList(retailNos.split(",")));
原理是将 java.util.Arrays.ArrayList值复制到新的java.util.ArrayList对象中。
择善人而交,择善书而读,择善言而听,择善行而从。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· Manus爆火,是硬核还是营销?
· 终于写完轮子一部分:tcp代理 了,记录一下
· 别再用vector<bool>了!Google高级工程师:这可能是STL最大的设计失误
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 单元测试从入门到精通