两个List集合取交集、并集、差集

list1.removeAll(list2):从list1中移除存在list2中的元素。
调用流程:removeAll->contains->equals方法,对于引用类型,要使用removeAll,需要重写equals方法

removeAll源码:

public boolean removeAll(Collection<?> c) {Objects.requireNonNull(c);boolean modified = false;Iterator<?> it = iterator();while (it.hasNext()) {if (c.contains(it.next())) {it.remove();modified = true;}}return modified;
}

contains源码:

public boolean contains(Object o) {Iterator<E> it = iterator();if (o==null) {while (it.hasNext())if (it.next()==null)return true;} else {while (it.hasNext())if (o.equals(it.next()))return true;}return false;
}

当对象o不为空时,迭代判断用到了Object的equals方法,而Object的equals方法指的是两个对象的引用是否相等,如果我们要判断两个对象的内容相等,这里就需要重写equals方法。

JDK1.8 lambda表达式取交集、并集、差集(String类型,已重写了equals方法)

public static void main(String[] args) {List<String> list1 = new ArrayList<String>();list1.add("1");list1.add("2");list1.add("3");list1.add("5");list1.add("6");List<String> list2 = new ArrayList<String>();list2.add("2");list2.add("3");list2.add("7");list2.add("8");// 交集List<String> intersection = list1.stream().filter(item -> list2.contains(item)).collect(toList());System.out.println("---交集 intersection---");intersection.parallelStream().forEach(System.out :: println);// 差集 (list1 - list2)List<String> reduce1 = list1.stream().filter(item -> !list2.contains(item)).collect(toList());System.out.println("---差集 reduce1 (list1 - list2)---");reduce1.parallelStream().forEach(System.out :: println);// 并集List<String> listAll = list1.parallelStream().collect(toList());List<String> listAll2 = list2.parallelStream().collect(toList());listAll.addAll(listAll2);System.out.println("---并集 listAll---");listAll.parallelStream().forEachOrdered(System.out :: println);// 去重并集List<String> listAllDistinct = listAll.stream().distinct().collect(toList());System.out.println("---得到去重并集 listAllDistinct---");listAllDistinct.parallelStream().forEachOrdered(System.out :: println);System.out.println("---原来的List1---");list1.parallelStream().forEachOrdered(System.out :: println);System.out.println("---原来的List2---");list2.parallelStream().forEachOrdered(System.out :: println);}

上述转载自:“https://www.cnblogs.com/lyrb/p/12923615.html”,感谢!!

下面这个是遇到的一个问题

//两个list长度相等,对应下标数值相加(list类型为Integer)
List<Integer> list1 = Arrarys.asList(1,2,3,4,5);
List<Integer> list2 = Arrarys.asList(1,2,3,4,5);List<Integer> result = IntStream.range(0, list1.size()) .map(i -> list1.get(i) + list2.get(i)) .boxed() .collect(Collectors.toList());//此为list长度相等情况,若不等,将长度较短的那个list补0;
IntStrean.range(0, Math.min(list1.size(), list2.size()));

java8对list的操作两个List集合取交集、并集、差集相关推荐

  1. 两个List集合取交集、并集、差集

    两个List集合取交集.并集.差集 list1.removeAll(list2):从list1中移除存在list2中的元素. 调用流程:removeAll->contains->equal ...

  2. 两个List集合取交集

    两个List集合取交集.并集.差集.去重并集的一个简单Demo,可供参考: import java.util.ArrayList; import java.util.List; import stat ...

  3. 【Java用法】java 8两个List集合取交集、并集、差集、去重并集

    在业务的开发过程中会经常用到两个List集合相互取值的情况,于是记录在此,方便后续使用哦~~~ public class ListTest {public static void main(Strin ...

  4. 两个List集合取交集、并集、差集、去重并集

    package com.example.list_test;import java.util.ArrayList; import java.util.List;import static java.u ...

  5. java中两个list对象取交集、差集

    在一般操作中,对于list集合取交集.差集.并集,比较简单,网上有很多例子,如: 今天我们来说一下对于两个list集合该如何取交集与并集: 如下两个集合:groupEntityList.saveEnt ...

  6. lambda 对象去重_采用java8 lambda表达式 实现 java list 交集 并集 差集 去重复并集...

    采用java8 lambda表达式 实现java list 交集/并集/差集/去重并集 一般的javaList 交.并集采用简单的 removeAll retainAll 等操作,不过这也破坏了原始的 ...

  7. 采用java8 lambda表达式 实现 java list 交集 并集 差集 去重复并集

    采用java8 lambda表达式 实现java list 交集/并集/差集/去重并集 一般的javaList 交.并集采用简单的 removeAll retainAll 等操作,不过这也破坏了原始的 ...

  8. 求两个Linux文本文件的交集、差集、并集

    一.交集 sort a.txt b.txt | uniq -d 二.并集 sort a.txt b.txt | uniq 三.差集 a.txt-b.txt:sort a.txt b.txt b.txt ...

  9. oracle 任意结果集交集,oracle两个结果集取交集 sql语句取交集

    Oracle求两个结果集的交集? 从表1a,表2B中选择a.id,a.name 其中substr(a.name,1,1)=b.value 使用union all可以实现Oracle中union和uni ...

最新文章

  1. 给history命令加上执行用户和时间
  2. oracle apex接口文件,Oracle之APEX深入开发指南
  3. 计算机网络·数据链路层.三个基本问题
  4. 数据中心气流管理的基础:密闭系统的比较
  5. 最短路常用的四种模板(poj1847)
  6. MYSQL增量备份和全量备份脚本
  7. 判断 iframe 是否加载完成的完美方法(转)
  8. 使用 Django + Wusgi + Nginx 部署 Django
  9. ROS 基础: 在同一个节点里订阅和发布消息
  10. python调用数据库存储过程_python调用MySql存储过程
  11. matlab输入变量 复数,Matlab带符号变量的复数运算及其画图问题
  12. 华为手机浏览器不支持PUT提交方式的解决方案
  13. turtle库的学习
  14. html字体加粗代码_9102年了,公众号还不会换字体?
  15. 常见物理性能测试仪器设备档案
  16. 教你使用Python实现新个税计算器!
  17. 谷歌SEO考虑富媒体文件
  18. 螺旋线的画法---matlab代码
  19. 素描小子跑酷html5游戏在线玩,体验Html5实现的在线素描及绘画设计
  20. php获取指定日期的节假日信息

热门文章

  1. Wox Github下载太慢了
  2. 设计抗混叠滤波器的三个指导原则--日记
  3. docker 常用命令大全
  4. 通过Mycat分库分表
  5. [附源码]Java计算机毕业设计SSM个人人际关系管理软件
  6. C++基础---三目运算符
  7. 英语学习笔记(二)语法
  8. python论文题目大全_论文题目大全
  9. 数组18—push() :将一个或多个元素添加到数组的末尾
  10. 使用SOCK_PACKET编写ARP请求程序的例子