【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 = ...
随机推荐
- Markdown(3)Typora快捷键
Typora(3)快捷键 一.快捷键列表 操作内容 快捷键 助记词 1. 标题 Ctrl + 数字 1-6 2. 段落 Ctrl + 数字 0 3. 粗体 Ctrl + B (B) Bold 4. 斜 ...
- JQGrid 应用
jqGrid 原理 jqGrid是典型的B/S架构,服务器端只是提供数据管理,客户端只提供数据显示.换句话说,jqGrid可以以一种更加简单的方式来展现你数据库的信息,而且也可以把客户端数据传回给服务 ...
- Thinkphp3分析与审计
0x00 前言: 这篇是去年组内分享的时候给小伙伴写的0基础快速审计tp3系列的文章,主要是对架构做个分析以及审计一些sql注入漏洞~ 现在想想打算放出来,过了一年了,可能里面有一些问题,望看到的大佬 ...
- springboot源码解析-管中窥豹系列之BeanFactoryPostProcessor(十一)
一.前言 Springboot源码解析是一件大工程,逐行逐句的去研究代码,会很枯燥,也不容易坚持下去. 我们不追求大而全,而是试着每次去研究一个小知识点,最终聚沙成塔,这就是我们的springboot ...
- 爬虫必知必会(4)_异步协程-selenium_模拟登陆
一.单线程+多任务异步协程(推荐) 协程:对象.可以把协程当做是一个特殊的函数.如果一个函数的定义被async关键字所修饰.该特殊的函数被调用后函数内部的程序语句不会被立即执行,而是会返回一个协程对象 ...
- Android - Handler原理
Handler的主要作用是收发消息和切线程 功能一:收发消息 简单流程介绍 希望你看完这篇文章后也可以把流程自己讲出来,并且每个环节还可以讲出很多细节 他的消息机制离不开Looper.MessageQ ...
- 使用HTML、jquery、DOM创建文本
<html> <head> <meta charset="utf-8"> <meta charset="utf-8"& ...
- 给Winform中的TabControl添加更现代的拖拽功能
上周接到一个开发任务,大致是允许APP中的Tab拖动以成为一个独立Tab,脱离之前的TabControl,就是现在Web拖动标签页创建新窗口的功能,现在浏览器必备的功能,应该很简单,然而我司采用的Do ...
- Python-tkinter-window
示例代码讲解 1.加载tkinter模块 2.创建一个窗口 3.设置窗口的主题 4.开始窗口的事件循环 import tkinter 2 win = tkinter.Tk() 3 win.title( ...
- 【关系抽取-R-BERT】模型结构
模型的整体结构 相关代码 import torch import torch.nn as nn from transformers import BertModel, BertPreTrainedMo ...