/**
* @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. Deep Unfolding Network for Image Super-Resolution 论文解读

    Introduction 超分是一个在 low level CV 领域中经典的病态问题,比如增强图像视觉质量.改善其他 high level 视觉任务的表现.Zhang Kai 老师这篇文章在我看到的 ...

  2. 利用Visual Studio调试JavaScript脚本

    方法1: 方法2: 打开IE,按F12调试. 方法3: JS断电点debugger代替

  3. 关于《Android编程权威指南》的MockWalker在模拟器中无法运行的解决方法

    1.打开模拟器中的Dev Settings应用. 2.选中Allow mock locations选项. 之后应该就能正常运行了.

  4. Codeforces (ccpc-wannafly camp day2) L. Por Costel and the Semipalindromes

    题目链接:http://codeforces.com/gym/100923/problem/L 分析:题目要求序列首尾相同,在此基础上的字典序第k个:因为只存在a,b所以我们把它等效成0和1的话,字典 ...

  5. 基于Linux的tty架构及UART驱动详解

    更多嵌入式Linux原创,请关注公众号:一口Linux 一.模块硬件学习 1.1. Uart介绍 通用异步收发传输器(Universal Asynchronous Receiver/Transmitt ...

  6. LNMP配置——Nginx配置 —— Nginx的访问日志

    一.配置 先来看看Nginx的日志格式 #grep -A2 log_format /usr/local/nginx/conf/nginx.conf log_format combined_realip ...

  7. Java 运行时数据区和内存模型

    运行时数据区是指对 JVM 运行过程中涉及到的内存根据功能.目的进行的划分,而内存模型可以理解为对内存进行存取操作的过程定义.总是有人望文生义的将前者描述为 "Java 内存模型" ...

  8. MD摘要算法

    import static org.junit.Assert.*; import java.security.MessageDigest; //消息摘要 public class MDCoder { ...

  9. 2019 GDUT Rating Contest I : Problem B. Teamwork

    题面: 传送门 B. Teamwork Input file: standard input Output file: standard output Time limit: 1 second Memor ...

  10. IDA F5 提示反编译失败,函数太大

    修改IDA安装目录\cfg\hexrays.cfg文件 文本方式打开,修改MAX_FUNCSIZE 的值(可修改为1024)