【Set】Set集合求并集,交集,差集
/**
* @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集合求并集,交集,差集的更多相关文章
- 【Sets】使用Google Guava工程中Sets工具包,实现集合的并集/交集/补集/差集
获取两个txt文档的内容~存储进集合中求集合的并集/交集/补集/差集 package com.sxd.readLines.aboutDB; import java.io.BufferedReader; ...
- java数组并集/交集/差集(补集)
1.说明 使用java容器类的性质选择容器 2.实现 package com.wish.datastrustudy; import java.util.HashSet; import java.uti ...
- python求两个列表的并集.交集.差集
求两个列表的差集 >>> a = [1,2,3] >>> b=[1,2] >>> ################################ ...
- Linux 求文件交集 差集等
使用comm命令 假设两个文件FILE1和FILE2用集合A和B表示,FILE1内容如下: a b c e d a FILE2内容如下: c d a c 基本上有两个方法,一个是comm命令,一个是g ...
- [Linux] 取两个文件的并集/交集/差集
uniq -d是只打印重复行 -u是只打印独一无二的行文件A : abcd文件B: cdef取并集:A + B sort A B|uniq 取交集: sort A B|uniq -d 取差集:A - ...
- java8 集合求差集、并集、交集
前言 java8里最大亮点是lambda,让我们用习惯C# linq的语法,也能眼前一亮.但是比起C#的语法糖还是差的很远. 差集.并集.交集 @Test public void test1(){ L ...
- C# List 集合 交集、并集、差集、去重, 对象集合、 对象、引用类型、交并差补、List<T>
关键词:C# List 集合 交集.并集.差集.去重, 对象集合. 对象.引用类型.交并差.List<T> 有时候看官网文档是最高效的学习方式! 一.简单集合 Intersect 交集, ...
- python set() 集合的添加删除、交集、并集、差集、交叉补集、集合的方法介绍以及使用案例
可变不可变: 1.可变:列表.字典.例如列表类型是可变的,我修改了列表中的元素的值,但是列表本身在内存中的地址是没有变化的,所以列表的元素是可以被改变的 >>> name=[&quo ...
- iOS 数组集合操作(交集,并集,差集,子集)
1.求数组的 交集,并集,差集 NSArray *array1 = @[@"1",@"2",@"3"]; NSArray *array2 = ...
随机推荐
- 别再恐惧 IP 协议(万字长文 | 多图预警)
尽人事,听天命.博主东南大学硕士在读,热爱健身和篮球,乐于分享技术相关的所见所得,关注公众号 @ 飞天小牛肉,第一时间获取文章更新,成长的路上我们一起进步 本文已收录于 「CS-Wiki」Gitee ...
- Linux操作php.ini文件
有时你使用的是别人搭建好的环境,不知道php.ini在哪里,或者好久没有修改配置了,已经忘记了路径在哪,所以在操作文件之前,得先要找到.ini路径. 找php.ini 方式一 $ php -i | g ...
- Java练习——抽象类
需求: 2辆宝马,1辆别克商务舱,1辆金龙(34)座,租5天共多少租金. 轿车 客车(金杯.金龙) 车型 别克商务舱GL8 宝马550i 别克林荫大道 <=16座 >16座 日租费(元 ...
- 译文《最常见的10种Java异常问题》
封面:洛小汐 译者:潘潘 知彼知己,方能百战不殆. 前言 本文总结了有关Java异常的十大常见问题. 目录 检查型异常(checked) vs. 非检查型异常(Unchecked) 异常管理的最佳实践 ...
- Spring AOP的源码流程
一.AOP完成日志输出 1,导入AOP模块 <dependency> <groupId>org.springframework</groupId> <arti ...
- Android实现三角形气泡效果方式汇总
在开发过程中,我们可能会经常遇到这样的需求样式: 这张图是截取京东消息通知的弹出框,我们可以看到右上方有个三角形的气泡效果,这只是其中一种,三角形的方向还可以是上.下.左.右. 通过截图可以发现,气泡 ...
- WPF 实战 - 翻页控件
1. 先上效果 <StackPanel Orientation="Horizontal" HorizontalAlignment="Center"> ...
- 01-Spring概述(总览)
Spring概述 前言 Spring 发展至现在,俨然成为一个生态,但要理解其余的 Spring Boot.Spring Cloud 等框架,需要先对 Spring 的整个体系有一定的理解,因为其余的 ...
- Hibernate在oracle中ID增长的方式
引用链接:http://blog.csdn.net/w183705952/article/details/7367272 Hibernate在oracle中ID增长的方式 第一种:设置ID的增长策略是 ...
- 云原生的弹性 AI 训练系列之一:基于 AllReduce 的弹性分布式训练实践
引言 随着模型规模和数据量的不断增大,分布式训练已经成为了工业界主流的 AI 模型训练方式.基于 Kubernetes 的 Kubeflow 项目,能够很好地承载分布式训练的工作负载,业已成为了云原生 ...