java获取两个集合的交集,并集,差集,去重复并集
一.利用java8的新特性
java8 lambda表达式流操作不影响原始list对象;
- 对象类型处理
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);
- 简单类型的处理
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获取两个集合的交集,并集,差集,去重复并集相关推荐
- lambda 对象去重_采用java8 lambda表达式 实现 java list 交集 并集 差集 去重复并集...
采用java8 lambda表达式 实现java list 交集/并集/差集/去重并集 一般的javaList 交.并集采用简单的 removeAll retainAll 等操作,不过这也破坏了原始的 ...
- 采用java8 lambda表达式 实现 java list 交集 并集 差集 去重复并集
采用java8 lambda表达式 实现java list 交集/并集/差集/去重并集 一般的javaList 交.并集采用简单的 removeAll retainAll 等操作,不过这也破坏了原始的 ...
- java list 交集 并集 差集 去重复并集
2019独角兽企业重金招聘Python工程师标准>>> //并集 list1.addAll(list2); //交集 list1.retainAll(list2); //差集 lis ...
- java 两个list 交集 并集 差集 去重复并集
去重并集 例如:求List1和List2的并集,并实现去重. 思路是:先将list中与list2重复的去掉,之后将list2的元素全部添加进去. public static void test1(Li ...
- 【mysql】mysql获取两个集合的交集/差集/并集
mysql的常见场景,获取两个数据集的交集和差集 步骤 两个集合的结构要一致,对应的字段数,字段类型 将两个集合用 UNION ALL 关键字合并,这里的结果是有重复的所有集 将上面的所有集 GROU ...
- Java求两个数组的交集、差集、并集
目录 Java求两个数组的并集,代码如下: Java求两个数组的交集,代码如下: Java求两个数组的差集,代码如下: 交集.差集.并集测试代码如下: Java求两个数组的并集,代码如下: /*** ...
- java求两个集合的交集和并集,比较器
求连个集合的交集: import java.util.ArrayList; import java.util.List; public class TestCollection {public sta ...
- Java8新特性-实现两个集合的交集、差集、并集
1.测试代码 package com.example.demo;import org.junit.Test;import java.util.ArrayList; import java.util.L ...
- java集合操作-----求两个集合的交集和并集
java求两个集合的交集和并集 java如何求两个集合的交集和并集呢??其实java的API中已经封装了方法.今天写个简单的例子测试一下:(例子中以java.util.LinkedList为例) 求连 ...
最新文章
- Apache2.4.x下proxy_module、proxy_fcgi_module结合PHP-FPM解决内存不足问题
- 如何查看Oracle的用户权限
- Linux服务器通过rz/sz轻松上传下载文件
- 怎么设置ppt页面的长度和宽度_将PPT里的字弄很小,PPT就有逼格吗?
- 硬盘和显卡的访问与控制(三)(含多彩的Hello)——《x86汇编语言:从实模式到保护模式》读书笔记03
- 基于h5的跳一跳游戏的开发与实现_「南宁小程序开发」企业开发小程序有哪些好处?...
- iOS6新特征:UICollectionView介绍
- r语言 adf检验_r语言中如何进行两组独立样本秩和检验
- C++:21---仿函数
- java 汇总_java基础汇总
- Spring注解注入原理
- 计算机232接口接线,9针rs232串口接线图以及接线方法
- VSCode 之 设置 settings.json 配置文件
- POJ 3097 Falling Ice 笔记
- dede服务器建站_新手搭建DeDecms织梦网站的详细操作流程
- 黑客窃取企业数据的后门程序技巧
- React实现局部刷新
- 计算机工程怎么评,美国电气与计算机工程专业怎么样?评价如何
- 5年以上旧电脑如何升级
- linux下qt使用谷歌拼音,GitHub - aron566/google_pinyinim: 谷歌拼音输入法移植至QT,纯widget实现...
热门文章
- ubuntu下安装invidia显卡驱动
- 算法系列——颜色分类(Sort Colors)
- CentOS配置Nginx SSL
- GlobalMapper20把地形数据(tif)转为可打印的STL格式模型
- 可以装在口袋的洗牙器,无论走到哪里都可以进行专业洗牙~丨钛空舱
- OpenGLES两种方式画立方体
- AS5600 12 位可编程非接触式电位器
- JavaScript面试题及答案
- java 换行 separator_java输出换行的标准姿势line.separator
- python3 如何实现RSA加解密 MD5withRSA/SHA1withRSA/SHA256withRSA签名