一.利用java8的新特性
java8 lambda表达式流操作不影响原始list对象;

  1. 对象类型处理
 List<Student> list1 = new ArrayList<>();list1.add(new Student("name100","100"));list1.add(new Student("name102","102"));list1.add(new Student("name103","103"));List<Student> list2 = new ArrayList<>();list2.add(new Student("name103","103"));list2.add(new Student("name104","104"));Set<Student> set1 = new HashSet<>(list1);Set<Student> set2 = new HashSet<>(list2);
 1).交集
        List<Student> intersection = list1.stream().filter(set2::contains).collect(toList());System.out.println("---得到交集 intersection---");intersection.parallelStream().forEach(System.out::println);
 2).差集(list1--->list2)
List<Student> reduce1 = list1.stream().filter(item -> !set2.contains(item)).collect(toList());System.out.println("---得到差集 reduce1 (list1 - list2)---");reduce1.parallelStream().forEach(System.out::println);
 3).差集(list2--->list1)
List<Student> reduce2 = list2.stream().filter(item -> !set1.contains(item)).collect(toList());System.out.println("---得到差集 reduce2 (list2 - list1)---");reduce2.parallelStream().forEach(System.out::println);
 4).并集
List<Student> listAll = list1.parallelStream().collect(toList());List<Student> listAll2 = list2.parallelStream().collect(toList());listAll.addAll(listAll2);System.out.println("---得到并集 listAll---");listAll.parallelStream().forEach(System.out::println);
 5).去重并集
set1.addAll(set2);List<Student> listDistinctAll = new ArrayList<>(set1);System.out.println("---得到去重并集 listDistinctAll---");listDistinctAll.parallelStream().forEach(System.out::println);
  1. 简单类型的处理
List<String> list1 = new ArrayList<>();list1.add("1");list1.add("2");list1.add("3");List<String> list2 = new ArrayList<>();list2.add("3");list2.add("4");Set<String> set1 = new HashSet<>(list1);Set<String> set2 = new HashSet<>(list2);
 1).交集
List<String> intersection = list1.stream().filter(set2::contains).collect(toList());System.out.println("---得到交集 intersection---");intersection.parallelStream().forEach(System.out::println);
 2).差集(list1 - list2)
List<String> reduce1 = list1.stream().filter(item -> !set2.contains(item)).collect(toList());System.out.println("---得到差集 reduce1 (list1 - list2)---");reduce1.parallelStream().forEach(System.out::println);
 3).差集(list2 - list1)
List<String> reduce2 = list2.stream().filter(item -> !set1.contains(item)).collect(toList());System.out.println("---得到差集 reduce2 (list2 - list1)---");reduce2.parallelStream().forEach(System.out::println);
 4).并集
List<String> listAll = list1.parallelStream().collect(toList());List<String> listAll2 = list2.parallelStream().collect(toList());listAll.addAll(listAll2);System.out.println("---得到并集 listAll---");listAll.parallelStream().forEach(System.out::println);
 5).去重并集
set1.addAll(set2);List<String> listDistinctAll = new ArrayList<>(set1);System.out.println("---得到去重并集 listDistinctAll---");listDistinctAll.parallelStream().forEach(System.out::println);

二.利用ArrayList自带的方法

List<String> list1 = new ArrayList<String>();list1.add("1");list1.add("2");List<String> list2 = new ArrayList<String>();list2.add("2");list2.add("3");
 1). 差集(List1中有的但是List2中没有的元素)
 list1.removeAll(list2);System.out.println(list1);
 2). 并集(不去重)
 list1.addAll(list2);System.out.println(list1);
 3). 并集(去重)
 list1.removeAll(list2);list1.addAll(list2);System.out.println(list1);
 4). 交集
list1.retainAll(list2);System.out.println(list1);

java获取两个集合的交集,并集,差集,去重复并集相关推荐

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

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

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

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

  3. java list 交集 并集 差集 去重复并集

    2019独角兽企业重金招聘Python工程师标准>>> //并集 list1.addAll(list2); //交集 list1.retainAll(list2); //差集 lis ...

  4. java 两个list 交集 并集 差集 去重复并集

    去重并集 例如:求List1和List2的并集,并实现去重. 思路是:先将list中与list2重复的去掉,之后将list2的元素全部添加进去. public static void test1(Li ...

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

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

  6. Java求两个数组的交集、差集、并集

    目录 Java求两个数组的并集,代码如下: Java求两个数组的交集,代码如下: Java求两个数组的差集,代码如下: 交集.差集.并集测试代码如下: Java求两个数组的并集,代码如下: /*** ...

  7. java求两个集合的交集和并集,比较器

    求连个集合的交集: import java.util.ArrayList; import java.util.List; public class TestCollection {public sta ...

  8. Java8新特性-实现两个集合的交集、差集、并集

    1.测试代码 package com.example.demo;import org.junit.Test;import java.util.ArrayList; import java.util.L ...

  9. java集合操作-----求两个集合的交集和并集

    java求两个集合的交集和并集 java如何求两个集合的交集和并集呢??其实java的API中已经封装了方法.今天写个简单的例子测试一下:(例子中以java.util.LinkedList为例) 求连 ...

最新文章

  1. Apache2.4.x下proxy_module、proxy_fcgi_module结合PHP-FPM解决内存不足问题
  2. 如何查看Oracle的用户权限
  3. Linux服务器通过rz/sz轻松上传下载文件
  4. 怎么设置ppt页面的长度和宽度_将PPT里的字弄很小,PPT就有逼格吗?
  5. 硬盘和显卡的访问与控制(三)(含多彩的Hello)——《x86汇编语言:从实模式到保护模式》读书笔记03
  6. 基于h5的跳一跳游戏的开发与实现_「南宁小程序开发」企业开发小程序有哪些好处?...
  7. iOS6新特征:UICollectionView介绍
  8. r语言 adf检验_r语言中如何进行两组独立样本秩和检验
  9. C++:21---仿函数
  10. java 汇总_java基础汇总
  11. Spring注解注入原理
  12. 计算机232接口接线,9针rs232串口接线图以及接线方法
  13. VSCode 之 设置 settings.json 配置文件
  14. POJ 3097 Falling Ice 笔记
  15. dede服务器建站_新手搭建DeDecms织梦网站的详细操作流程
  16. 黑客窃取企业数据的后门程序技巧
  17. React实现局部刷新
  18. 计算机工程怎么评,美国电气与计算机工程专业怎么样?评价如何
  19. 5年以上旧电脑如何升级
  20. linux下qt使用谷歌拼音,GitHub - aron566/google_pinyinim: 谷歌拼音输入法移植至QT,纯widget实现...

热门文章

  1. ubuntu下安装invidia显卡驱动
  2. 算法系列——颜色分类(Sort Colors)
  3. CentOS配置Nginx SSL
  4. GlobalMapper20把地形数据(tif)转为可打印的STL格式模型
  5. 可以装在口袋的洗牙器,无论走到哪里都可以进行专业洗牙~丨钛空舱
  6. OpenGLES两种方式画立方体
  7. AS5600 12 位可编程非接触式电位器
  8. JavaScript面试题及答案
  9. java 换行 separator_java输出换行的标准姿势line.separator
  10. python3 如何实现RSA加解密 MD5withRSA/SHA1withRSA/SHA256withRSA签名