一、本文介绍两种写法

1原生写法

2com.google.guava写法
<dependency>
    <groupId>com.google.guava</groupId>
    <artifactId>guava</artifactId>
    <version>18.0</version>
</dependency>

二、代码

import com.google.common.collect.Sets;import java.util.HashSet;
import java.util.Set;/*** java求集合的交集、差集和并集*/
public class CollectionOperation {public static void main(String[] args) {Set<Integer> result = new HashSet<Integer>();//双括号语法 -> 本质是: 匿名内部类 + 实例化代码块//改写之后的代码就非常容易理解了。显然这是在HashSet的构造器中写了一个匿名内部类,这个匿名内部类含有一个实例初始化块//初始化块的内容是三个add()函数,向被初始化的this指向的HashSet中添加了三个元素。Set<Integer> set1 = new HashSet<Integer>() {private static final long serialVersionUID = 1L;{add(1);add(3);add(5);}};Set<Integer> set2 = new HashSet<Integer>() {private static final long serialVersionUID = 1L;{add(1);add(2);add(3);}};System.out.println("set1 " + set1);System.out.println("set2 " + set2);//原生写法System.out.println("原生写法 ===================");test1(result, set1, set2);//com.google.guava写法System.out.println("com.google.guava写法 ===================");test2(result, set1, set2);}public static void test1(Set<Integer> result, Set<Integer> set1, Set<Integer> set2) {//交集result.clear();result.addAll(set1);result.retainAll(set2);System.out.println("交集:" + result);//差集result.clear();result.addAll(set1);result.removeAll(set2);System.out.println("差集:" + result);//并集result.clear();result.addAll(set1);result.addAll(set2);System.out.println("并集:" + result);}public static void test2(Set<Integer> result, Set<Integer> set1, Set<Integer> set2) {//交集Sets.SetView<Integer> intersection = Sets.intersection(set1, set2);System.out.println("交集:" + intersection.immutableCopy()); // 可以使用交集,但不可变拷贝的读取效率更高//差集Sets.SetView<Integer> difference = Sets.difference(set1, set2);System.out.println("差集:" + difference.immutableCopy());//并集Sets.SetView<Integer> union = Sets.union(set1, set2);System.out.println("并集:" + union.immutableCopy());}}

三、输出

set1 [1, 3, 5]
set2 [1, 2, 3]
原生写法 ===================
交集:[1, 3]
差集:[5]
并集:[1, 2, 3, 5]
com.google.guava写法 ===================
交集:[1, 3]
差集:[5]
并集:[1, 3, 5, 2]

java求集合的交集、差集和并集相关推荐

  1. JAVA Hashset求集合的交集并集差集

    JAVA Hashset求集合的交集并集差集 Hashset是Set接口较为常见的一个子类,该子类的最大特点是不允许保存重复的元素,并且所有的内容都采用散列(无序)的方式进行存储. package c ...

  2. 27.python中的集合:求集合的交集、求集合的并集;竖杠 ”|“ 也表示并集、update()更新并集结果、集合的差集、集合的判定

    # 求集合的交集 # s1 = {'1', '2', '3', 4} # s2 = {1, 4, 5, 6} # result = s1.intersection(s2) # 注意:intersect ...

  3. 用顺序表求集合的交集、并集和差集

    使用顺序表时, 需要定义一个数组来存储顺序表中的所有元素和定义一个整型变量来存储顺序表的长度.假定数组用data[MaxSize]表示,长度整型变量用length表示,并采用结构体类型表示,元素类型采 ...

  4. python集合补集、差集、并集_python set集合运算(交集,并集,差集,对称差集)...

    1>交集 >>> x={1,2,3,4} >>> y={3,4,5,6} >>> x set([1, 2, 3, 4]) >>& ...

  5. java 求集合真子集_【同步练习】高一高中数学必修1集合的关系与元素性质

    一.选择题(每小题2分,共30分) 1.若{1,2,3}A ⊆{1,2,3,4,5},则集合A的个数为(    ) A.2B.3C.4D.5 正确答案 B 解析 集合{1,2,3}是集合A的真子集,同 ...

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

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

  7. JAVA求集合中的组合

    好几个月没弄代码了,今天弄个求组合的DEMO 思路是将集合的每个值对照一个索引,索引大小是集合的大小+2.索引默认为[000...000],当组合后选取的组合值demo为[0100..00].然后根据 ...

  8. java 求集合平均数_图像二值化方法介绍(转载学习)

    ImageJ中图像二值化方法介绍 概述 二值图像分析在对象识别与模式匹配中有重要作用,同时也在机器人视觉中也是图像处理的关键步骤,选择不同图像二值化方法得到的结果也不尽相同.本文介绍超过十种以上的基于 ...

  9. java 求集合真子集_【每日打卡】新高一数学必修打卡第二天教学视频—集合的基本运算...

    运算: (1)交运算:A∩B={x│x∈A且x∈B}: (2)并运算:A∪B={x│x∈A或x∈B}: (3)补运算:当A是U的子集时,={x│x∈U且xA}. 运算性质: (1)A∩A=A∪A=A: ...

最新文章

  1. leetcode算法题--最长字符串链
  2. Citrix各系列产品安装光盘资源下载链接
  3. 有关计算机代码的游戏,七灯游戏是一款经典的益智类游戏。游戏中,有七盏灯排成一圈,如图a所示,初始时灯的开关状态随机生成,操作其中某一盏灯,则可以切换该灯的“开/关”状态,同时,这盏灯-组卷网...
  4. linux如何判断网线插入_“Linux”中如何判断哪个网卡连接网线?
  5. android微信支付回调方法,Android接入支付宝和微信支付的方法
  6. mysql 表的增删改查_MySQL数据表的增删改查
  7. 美食短视频怎么拍才会吸引人?美食+定位,助你吸粉引流
  8. 阿里网盘挂载到本地(Webdav)
  9. 什么TO B类销售 TO B这个行业的销售好做吗
  10. PAT 乙级练习 1068 万绿丛中一点红 - 超级详细的思路讲解
  11. Java后端生成Echarts并渲染Word转PDF
  12. Logback日志配置和简单使用
  13. Flutter一键自动生成并替换图标 Android iOS图标(
  14. 第7章 网络层协议(3)_ARP协议
  15. Dreamweaver Cs4 jQuery自动提示插件绿色版
  16. 安装django-cors-headers
  17. 用boost filesytem清空(删除)文件夹下所有文件
  18. 运算放大器的共模增益问题
  19. 鸿蒙OS麒麟659,搭载海思麒麟659的手机有哪些
  20. 几款强大的网页生成工具

热门文章

  1. ubuntu安装向日葵
  2. 睡眠不足和社会情绪大脑
  3. 03、使用 Anaconda
  4. 音视频基础之复合流解析:TS流格式的讲解
  5. bert-as-service的使用
  6. 金融行业需要掌握python_掌握Wind, Excel和Python三大金融必备技能, 实现年薪翻两番...
  7. js php 实时更新数字,js实现股票实时刷新数据案例
  8. win10内置vpn连接出现的一个错误——L2TP连接尝试失败,因为安全层在初始化与远程计算机的协商时遇到了一个处理错误
  9. Linux命令:ls的实现
  10. Intel研究院院长吴甘沙演讲全文:大数据分析师的卓越之道(32PPT)