以ArrayList为例:
List<String> list1 = new ArrayList<>();
list1.add("1");
list1.add("2");
list1.add("3");
List<String> list2 = new ArrayList<>();
list2.add("1");
list2.add("4");
list2.add("5");
方法一:使用Collection集合提供的方法removeAll(Collection<?> c)
代码:
list2.removeAll(list1);
list2.forEach(System.out::println);
结果:
4
5
方法二:使用fori
代码:
for (int i = 0; i < list2.size(); i++) {
for (int i1 = 0; i1 < list1.size(); i1++) {
if(list2.get(i)==list1.get(i1)){
list2.remove(list1.get(i1));
}
}
}
list2.forEach(System.out::println);
结果:
4
5
注意:不可以使用增强for循环,否则会报以下错误:
java.util.ConcurrentModificationException
java.util.ConcurrentModificationException
at java.util.ArrayList$Itr.checkForComodification(ArrayList.java:909)
at java.util.ArrayList$Itr.next(ArrayList.java:859)
...
方法三:使用jdk8的Stream流的中间操作filter(过滤)
代码:
List<String> collect = list2.stream().filter(item -> !list1.contains(item)).collect(Collectors.toList());
collect.forEach(System.out::println);
结果:
4
5