/**
* @author: Sam.yang
* @date: 2020/11/16 11:14
* @desc: Set集合操作工具类
*/
public class SetOptUtils {
/**
* 取两数交集.
* <P>
* Example:
*
* <pre>
* src={1,2,3},dest={2,4}
* intersect(dest,src)={2}
* </pre>
*
* @param dest
* The destination set.
* @param src
* The source set.
* @return the same elements of src and dest
*/
public static <T> Set<T> intersect(Set<T> dest, Set<T> src) {
Set<T> set = new HashSet<T>(src.size());
copy(set, src);
set.retainAll(dest);
return set;
} /**
* 取两数并集.
* <P>
* Example:
*
* <pre>
* src={1,2,3},dest={2,4,5}
* union(dest,src)={1,2,3,4,5}
* </pre>
*
* @param dest
* The destination set.
* @param src
* The source set.
* @return the all elements of src and dest
*/
public static <T> Set<T> union(Set<T> dest, Set<T> src) {
Set<T> set = new HashSet<T>(src.size());
copy(set, src);
set.addAll(dest);
return set;
} /**
* 取两数差集(减法).
* <P>
* Example:
*
* <pre>
* src={1,2,3},dest={2,4,5},src-dest={1,3}
* diff(dest,src)={1,3}
* </pre>
*
* @param dest
* The destination set.
* @param src
* The source set.
* @return the elements in src but not exist dest
*/
public static <T> Set<T> diff(Set<T> dest, Set<T> src) {
Set<T> set = new HashSet<T>(src.size());
copy(set, src);
set.removeAll(dest);
return set;
} /**
* 集合判空.
*
* @param c
* The source collection.
* @return true/false
*/
public static boolean isEmpty(Collection<?> c) {
boolean rs = false;
if (c == null || (c != null && c.isEmpty())) {
rs = true;
}
return rs;
} /**
* 判断两集合是否有相同的元素.
* @param dest The destination set.
* @param src The source list.
* @return true/false
*/
public static <T> boolean isSameElements(Set<T> dest, Set<T> src) {
if (isEmpty(dest) || isEmpty(src)) {
return false;
} Set<T> set = intersect(dest, src);
if (set.size() > 0) {
return true;
} return false;
} /**
* Copies all of the elements from src set into dest.
*
* @param dest
* The destination set.
* @param src
* The source list.
*/
private static <T> void copy(Set<T> dest, Set<T> src) {
dest.addAll(src);
} public static void main(String[] args) {
Set<String> set = new HashSet<String>();
Set<String> set2 = new HashSet<String>();
set.add("111");
set.add("010W");
set2.add("010W");
System.out.println(diff(set, set2));
}

【Set】Set集合求并集,交集,差集的更多相关文章

  1. 【Sets】使用Google Guava工程中Sets工具包,实现集合的并集/交集/补集/差集

    获取两个txt文档的内容~存储进集合中求集合的并集/交集/补集/差集 package com.sxd.readLines.aboutDB; import java.io.BufferedReader; ...

  2. java数组并集/交集/差集(补集)

    1.说明 使用java容器类的性质选择容器 2.实现 package com.wish.datastrustudy; import java.util.HashSet; import java.uti ...

  3. python求两个列表的并集.交集.差集

    求两个列表的差集 >>> a = [1,2,3] >>> b=[1,2] >>> ################################ ...

  4. Linux 求文件交集 差集等

    使用comm命令 假设两个文件FILE1和FILE2用集合A和B表示,FILE1内容如下: a b c e d a FILE2内容如下: c d a c 基本上有两个方法,一个是comm命令,一个是g ...

  5. [Linux] 取两个文件的并集/交集/差集

    uniq -d是只打印重复行 -u是只打印独一无二的行文件A : abcd文件B: cdef取并集:A + B sort A B|uniq 取交集: sort A B|uniq -d 取差集:A - ...

  6. java8 集合求差集、并集、交集

    前言 java8里最大亮点是lambda,让我们用习惯C# linq的语法,也能眼前一亮.但是比起C#的语法糖还是差的很远. 差集.并集.交集 @Test public void test1(){ L ...

  7. C# List 集合 交集、并集、差集、去重, 对象集合、 对象、引用类型、交并差补、List<T>

    关键词:C#  List 集合 交集.并集.差集.去重, 对象集合. 对象.引用类型.交并差.List<T> 有时候看官网文档是最高效的学习方式! 一.简单集合 Intersect 交集, ...

  8. python set() 集合的添加删除、交集、并集、差集、交叉补集、集合的方法介绍以及使用案例

    可变不可变: 1.可变:列表.字典.例如列表类型是可变的,我修改了列表中的元素的值,但是列表本身在内存中的地址是没有变化的,所以列表的元素是可以被改变的 >>> name=[&quo ...

  9. iOS 数组集合操作(交集,并集,差集,子集)

    1.求数组的 交集,并集,差集 NSArray *array1 = @[@"1",@"2",@"3"]; NSArray *array2 = ...

随机推荐

  1. PID算法验证

    算法: struct PID { float kp; float kpnfac; float ki; float kinfac; float kd; }; float gCurPPM = 1300; ...

  2. 如何使用python爬取网页动态数据

    我们在使用python爬取网页数据的时候,会遇到页面的数据是通过js脚本动态加载的情况,这时候我们就得模拟接口请求信息,根据接口返回结果来获取我们想要的数据. 以某电影网站为例:我们要获取到电影名称以 ...

  3. 剑指 Offer 62. 圆圈中最后剩下的数字 + 约瑟夫环问题

    剑指 Offer 62. 圆圈中最后剩下的数字 Offer_62 题目描述 方法一:使用链表模拟 这种方法是暴力方法,时间复杂度为O(nm),在本题中数据量过大会超时. 方法二:递归方法 packag ...

  4. gRPC在 ASP.NET Core 中应用学习

    一.gRPC简介: gRPC 是一个由Google开源的,跨语言的,高性能的远程过程调用(RPC)框架. gRPC使客户端和服务端应用程序可以透明地进行通信,并简化了连接系统的构建.它使用HTTP/2 ...

  5. 大牛带你学会java类加载机制,不要错过,值得收藏!

    很多人对java类加载机制都是非常抗拒的,因为这个太难理解了,但是我们作为一名优秀的java工程师,还是要把java类加载机制研究和学习明白的,因为这对于我们在以后的工作中有很大的帮助,因为它在jav ...

  6. 关于go中并发的初步理解

    1.一些概念的介绍: 概念 描述 进程 在内存中的程序.有自己独立的独占的虚拟 CPU .虚拟的 Memory.虚拟的 IO devices. (1) 每一进程占用独立的地址空间. 此处的地址空间包括 ...

  7. 【牛客网】数据库SQL实战(题解)

    1.查找最晚入职员工的所有信息 [题解] hire_date可能存在重复值,所以需要找到hire_date的最大值,然后再筛选,才能hire_date最晚的记录都筛选出来. [代码] 1 SELECT ...

  8. QT实现OPC_UA客户端程序以及与OPC_UA服务器通信

    1.OPC_UA服务器准备工作 1.关于OPC_UA服务器的搭建可以参考前面一篇文章:https://blog.csdn.net/xipengbozai/article/details/1150809 ...

  9. [图论]最优布线问题:kruskal

    最优布线问题 目录 最优布线问题 Description Input Output Sample Input Sample Output Hint 解析 代码 Description 学校有n台计算机 ...

  10. [图论]最优布线问题:prim

    最优布线问题 目录 最优布线问题 Description Input Output Sample Input Sample Output Hint 解析 代码 Description 学校有n台计算机 ...