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 @ 2022-10-23 14:14  寒冷的雨呢  阅读(125)  评论(0编辑  收藏  举报