去除两个List集合相同的元素,返回List

以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

猜你喜欢

转载自blog.csdn.net/weixin_48568302/article/details/125404551
今日推荐