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对象中。
择善人而交,择善书而读,择善言而听,择善行而从。