【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 = ...
随机推荐
- 快速查找未打补丁的exp
在windows DOS窗口下输入以下内容,输出为未打的补丁信息列表 systeminfo>vul.txt&(for %i in (KB977165 KB2160329 KB250366 ...
- C# 应用 - 多线程 7) 处理同步数据之 Synchronized code regions (同步代码区域): Monitor 和 lock
目录: System.Threading.Monitor:提供同步访问对象的机制; lock 是语法糖,是对 Monitor Enter 和 Exit 方法的一个封装 lock 案例 1. Monit ...
- JVM实战调优(空格引发的服务异常)
JVM实战调优 问题描述 某一个项目中有一个文字转语音的服务,使用的是科大讯飞的语音转换服务,需要调用三方服务.因其转换服务是一个耗时操作,官方给的demo使用的是 WebSocket 进行数据转换操 ...
- php小结
//函数定义常量:definedefine("PI",3.14); //使用const关键字const PII = 3; 特殊常量:双下划线开始+常量名+双下划线结束,称为魔术常量 ...
- Flask面试问题
1,什么是Flask,有什么优点?概念解释Flask是一个Web框架,就是提供一个工具,库和技术来允许你构建一个Web应用程序.这个Web应用程序可以是一些Web页面,博客,wiki,基于Web的日里 ...
- 记录Java注解在JavaWeb中的一个应用实例
概述 在学习注解的时候,学了个懵懵懂懂.学了JavaWeb之后,在做Demo项目的过程中,借助注解和反射实现了对页面按钮的权限控制,对于注解才算咂摸出了点味儿来. 需求 以"角色列表&quo ...
- 【Django笔记0】-Django项目创建,settings设置,运行
Django项目创建,settings设置,运行 1,项目创建 通过pip下载Django以后,在cmd中cd到想要创建项目的路径,之后输入: django-admin startproject ...
- Dynamics CRM 在表单上显示更改历史记录(审核历史记录)
前言 虽然Dynamics CRM自带的审计很好,但是对于缺乏使用CRM经验的用户来说,自带的UCI界面实在是太隐藏了: 于是乎就出现了需求:想通过在表单上直接看到看审计历史记录: 在网上搜索了很多中 ...
- Centos7安装以及设置Redis详细步骤
一.Redis安装: 1.指定文件夹下下载redis安装包: [root@bogon ~]# mkdir /usr/local/soft/redis [root@bogon ~]# cd /usr/l ...
- c++ vector容器浅析
注:本文章参考 https://www.runoob.com/w3cnote/cpp-vector-container-analysis.html 前言: 最近遇到一个广搜的题,不管怎么试都会暴 然后 ...