jdk8两个List取交集、差集、并集(不去重)、并集(去重)

/*** 交集* @param list1* @param list2* @return*/private static List<String> intersect(List<String> list1, List<String> list2) {List<String> intersect = list1.stream().filter(item -> list2.contains(item)).collect(Collectors.toList());return intersect;}/*** 差集(list1-list2)* @param list1* @param list2* @return*/private static List<String> minus(List<String> list1, List<String> list2) {List<String> minus = list1.stream().filter(item -> !list2.contains(item)).collect(Collectors.toList());return minus;}/*** 并集(不去重)* @param list1* @param list2* @return*/private static List<String> unionAll(List<String> list1, List<String> list2) {list1.addAll(list2);return list1;}/*** 并集(去重)* @param list1* @param list2* @return*/private static List<String> union(List<String> list1, List<String> list2) {list1.addAll(list2);return list1.stream().distinct().collect(Collectors.toList());}

demo代码:

public class TestSetOperation {public static void main(String[] args) {List<String> list1 = Arrays.asList("a","b","c","d");List<String> list2 = Arrays.asList("c","d","e","f");//交集List<String> intersect = intersect(list1, list2);System.out.println("---交集 intersection---");intersect.stream().forEach(System.out::println);//差集(list1-list2)List<String> minus = minus(list1, list2);System.out.println("---差集 minus(list1-list2)---");minus.stream().forEach(System.out::println);//差集(list2-list1)//List<String> minus2 = list2.stream().filter(item -> !list1.contains(item)).collect(Collectors.toList());List<String> minus2 = minus(list2,list1);System.out.println("---差集 minus(list2-list1)---");minus2.stream().forEach(System.out::println);//并集unionAllList<String> list3 = new ArrayList<String>(){{add("aa");add("bb");add("cc");add("dd");}};List<String> list4 = new ArrayList<String>(){{add("cc");add("dd");add("ee");add("ff");}};System.out.println("---并集 不去重---");List<String> unionAll = unionAll(list3,list4);unionAll.stream().forEachOrdered(System.out::println);//并集去重List<String> union = union(list3,list4);System.out.println("---并集 去重---");union.stream().forEachOrdered(System.out::println);}/*** 交集* @param list1* @param list2* @return*/private static List<String> intersect(List<String> list1, List<String> list2) {List<String> intersect = list1.stream().filter(item -> list2.contains(item)).collect(Collectors.toList());return intersect;}/*** 差集(list1-list2)* @param list1* @param list2* @return*/private static List<String> minus(List<String> list1, List<String> list2) {List<String> minus = list1.stream().filter(item -> !list2.contains(item)).collect(Collectors.toList());return minus;}/*** 并集(不去重)* @param list1* @param list2* @return*/private static List<String> unionAll(List<String> list1, List<String> list2) {list1.addAll(list2);return list1;}/*** 并集(去重)* @param list1* @param list2* @return*/private static List<String> union(List<String> list1, List<String> list2) {list1.addAll(list2);return list1.stream().distinct().collect(Collectors.toList());}
}

输出结果:

---交集 intersect---
c
d
---差集 minus(list1-list2)---
a
b
---差集 minus(list2-list1)---
e
f
---并集 不去重---
aa
bb
cc
dd
cc
dd
ee
ff
---并集 去重---
aa
bb
cc
dd
ee
ff

jdk8两个List取交集、差集、并集(不去重)、并集(去重)相关推荐

  1. Python-两个列表取交集、并集、差集(编写了一个两个文件取交集的小工具)

    最近突然有个需求(取两个文件数据的交集),数据量非常大(2000多万行的数据),最开始的思路是先取一个文件所有的数据,保存成一个列表,然后判断是否在另一个文件中,花了十几分钟写出来后,一运行,差点崩溃 ...

  2. Python中两个list取交集、并集、差集以及为字符串str添加、插入特定字符的操作总结

    Python中两个list取交集.并集.差集以及为字符串str添加.插入特定字符的操作总结 Python中两个list取交集.并集.差集 为字符串str添加.插入特定字符的操作总结 Python中两个 ...

  3. 【Java】对两个Set取交集,差集,并集

    1.取交集(取两个集合中都存在的元素) HashSet<String> setA = new HashSet<>(); HashSet<String> setB = ...

  4. stram流两个list的交集差集

    最近用的stream比较多,但是也就最简单的foreach和map的使用.今天遇到一个问题是两个集合取差集吧.知道stram有fiter过滤的,但是现在是两个集合,所有百度了好多,今天看到了两个集合取 ...

  5. linux两个文件取交集、并集、差集

    如何得到两个文件的交集.并集和差集? 交集:两个文件中都出现的行 并集:两个文件中的所有行加起来,去掉重复 差集:在一个文件中存在,而在另一个文件中不存在. 比如以下两个文件: a.txt aaa b ...

  6. python两个list取交集_使用 Python 获取两个列表的交集、并集、差集的常用方法 | Jin''''s Blog...

    在数据处理中经常需要使用 Python 来获取两个列表的交集,并集和差集.在 Python 中实现的方法有很多,我平时只使用一两种我所熟悉的,但效率不一定最高,也不一定最优美,所以这次想把常用的方法都 ...

  7. Linux中uniq去重以及对两个文件取交集,并集,差集

    uniq 前言 很多时候我们需要对数据去重,不管是少量数据还是大量数据,写代码进行去重终究没有使用系统功能直接操作文件方便,所以本文就介绍了一些关于uniq的使用方法 uniq单独使用 uniq配合s ...

  8. python对两个list取交集、并集、和异或

    第一种方法:使用python基本数据结构set集合. 优点:集合运算长度可以不一致,运算效率高 缺点:两个进行运算的集合中不能够含有重复的元素,如果含有的话,转成set集合后,会自动去掉重复元素 a= ...

  9. 【mysql】mysql获取两个集合的交集/差集/并集

    mysql的常见场景,获取两个数据集的交集和差集 步骤 两个集合的结构要一致,对应的字段数,字段类型 将两个集合用 UNION ALL 关键字合并,这里的结果是有重复的所有集 将上面的所有集 GROU ...

最新文章

  1. 数据结构_Search
  2. 【Git】Git教程
  3. Mysql(3)——mysql数据类型
  4. 2019牛客第八场A All-one Matrices(单调栈)
  5. APUE读书笔记-04文件和目录(1)
  6. CAN总线电平(隐性与显性)
  7. 微服务架构案例(01):项目技术选型简介,架构图解说明
  8. 如果用float实现居中
  9. YARN调度策略比较
  10. SpringBoot通过配置文件自动加载到map中
  11. MySQL中Checkpoint技术
  12. ListView优化的
  13. Visio画图删去四周白边
  14. 百度信誉认证体系初级实名认证即将取消,这意味着什么?
  15. Python实现程序运行时间度量分析
  16. 基于MATLAB的数字调制方法
  17. 行云Talk|开发工具一体化,在线IDE会不会成为一种趋势呢?
  18. 网线直接接电脑可以上网,但是接到无线路由器上,就不能上网了
  19. 【数据结构】图邻接矩阵的创建完整代码
  20. canvas——绘制文字

热门文章

  1. postgresql数据库备份命令
  2. 2018-12-14 直播课笔记
  3. 宝塔面板mysql无法启动的问题
  4. python supper函数_第四节: 字符串魔法功能
  5. vs2019与SQL server2008连接以及基本操作
  6. react native FlatList遇到的问题
  7. java计算机毕业设计HTML5企业员工管理系统MyBatis+系统+LW文档+源码+调试部署
  8. 自建连接池,通过动态代理增强getConnection()方法,使其调用用close()方法时具有返回连接的功能
  9. 计算机应用专业中高职衔接专业优势,关于计算机应用专业中高职衔接的思考
  10. c++ error: definition of explicitly-defaulted 问题