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对象中。

https://blog.csdn.net/IPI715718/article/details/104796887/

posted @   寒冷的雨呢  阅读(129)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· Manus爆火,是硬核还是营销?
· 终于写完轮子一部分:tcp代理 了,记录一下
· 别再用vector<bool>了!Google高级工程师:这可能是STL最大的设计失误
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 单元测试从入门到精通
点击右上角即可分享
微信分享提示