-
2021-03-15 03:41:37
java求两个集合的交集和并集
java如何求两个集合的交集和并集呢??其实java的API中已经封装了方法。今天写个简单的例子测试一下:(例子中以java.util.LinkedList为例)
求连个集合的交集:
import java.util.ArrayList;
import java.util.List;
public class TestCollection {
public static void main(String[] args) {
List strList = new ArrayList();
List strList2 = new ArrayList();
for(int i = 0; i < 10; i ++) {
strList.add("aaa>>" + i);
strList2.add("aaa>>" + (10 - i));
}
//求出交集
strList2.retainAll(strList);
System.out.println("交集大小:" + strList2.size());
for(int i = 0; i < strList2.size(); i++) {
System.out.println(strList2.get(i));
}
}
}
求两个集合的并集:
import java.util.ArrayList;
import java.util.List;
public class TestCollection {
public static void main(String[] args) {
List strList = new ArrayList();
List strList2 = new ArrayList();
for(int i = 0; i < 10; i ++) {
strList.add("aaa>>" + i);
strList2.add("aaa>>" + (10 - i));
}
//求出并集
strList2.removeAll(strList);
strList2.addAll(strList);
System.out.println("并集大小:" + strList2.size());
for(int i = 0; i < strList2.size(); i++) {
System.out.println(strList2.get(i));
}
}
} 例子非常简单,希望对大家有帮助!!!
更多相关内容 -
用链表做集合的交集和并集
2021-05-22 16:03:59该楼层疑似违规已被系统折叠隐藏此楼查看此楼#includeusing namespace std;const int MaxSize=10;templateclass LinkList{public:LinkList();LinkList(DataType a[],int n);~LinkList();int Length();...该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
#include
using namespace std;
const int MaxSize=10;
template
class LinkList
{
public:
LinkList();
LinkList(DataType a[],int n);
~LinkList();
int Length();
DataType Get(int i);
int Locate(DataType x);
void Insert(int i,DataType x);
DataType Delete(int i);
void PrintList();
private:
LinkList*first;
DataType data[MaxSize];
};
template
LinkList*p;
template
LinkList::LinkList(DataType a[],int n)
{
first=new LinkList;
first->next=NULL;
for(int i=0;i
{
s=new LinkList;
s->data[i];
s->next=first->next;
first->next=s;
}
}
template
void LinkList::PrintList()
{
p=first->next;
while(p!=NULL)
{
cout<data;
p=p->next;
} }
template
int LinkList::Length()
{
p=first->next;
int count=0;
while(p!NULL)
{
p=p->next;
count++;
} return count;
}
template
LinkList::Get(int i)
{
p=p->next;
int count=1;
while(p!=NULL&&count
{
p=p->next;
count++;
}
if(p=+NULL) throw "查找不到该元素"
else
return p->data;
}
template
void LinkList::Insert(int i,DataType x)
{
p=first;
int count=0;
while(p!=NULL&count
{
p=p->next;
count++;
}
if(p==NULL) throw"出错";
else
{
s=new LinkList;
s->datd=x;
s->next=p->next;
p->next=s;
}
}
template
LinkList::LinkList()
{
first=new LinkList;
first->next=NULL;
}
template
DataType LinkList::Delete(int i)
{
LinkList*q;
int x;
p=first;
int count=0;
while(p!=NULL&&count
{
p=p->next;
count++;
}
if(p==NULL||p->next==NULL)
{
throw"error";
}
else
{
q=p->next;
x=q->data;
q->next=p->next;
delete q;
return x;
} }
template
LinkList::~LinkList()
{
LinkList*q;
while(first!=NULL)
{
q=first;
first=first->next;
delete q;
}
}
int main()
{
LinkList*iptr;
int a[10];
cout<
{
cin>>a[i];
}
int size;
size=sizeof(a)/sizeof(int); iptr.LinkList(a,size);
int j;
cout<
cin>>j;
cout<Get(j)<
int d;
cout<
cin>>d;
cout<Delete(d)<
int k;
int e;
cout<
cin>>k>>e;
iptr.Insert(k,e);
cout<
p.~LinkList();
cout<
p.PrintList();
return 0;
}
自己慢慢看
-
怎样对数组进行交集与并集运算
2018-01-10 11:35:09以下不代表最优解,只是在学习中突然想到要怎么对数组进行交集与并集的运算 所以在自己尝试写了一遍后记录下来。数组的并集给定两个数组: int[] a = {1, 2, 3, 4, 5}; int[] b = {2, 3, 5, 6, 7}; 输出: 1,2,...以下不代表最优解,只是在学习中突然想到要怎么对数组进行交集与并集的运算
所以在自己尝试写了一遍后记录下来。数组的并集
给定两个数组:
int[] a = {1, 2, 3, 4, 5};
int[] b = {2, 3, 5, 6, 7};
输出:
1,2,3,4,5,6,7我的思路:
两个数组的交集第一时间想到的肯定是最简单的两两比较,如果相等就加进新数组,但是这样做会造成时间的大量浪费,如果两个长度各1W的数组,比较完的时间….不可想象。
然后马上就想到Java的HashSet,重复不添加,所以把所有的数组遍历进Set,再遍历Set岂不是就完成了。
于是很容易实现了我的代码:int[] a = {1, 2, 3, 4, 5}; int[] b = {2, 3, 5, 6, 7}; HashSet<Integer> hashSet = new HashSet<>(); for (int aNum : a) { hashSet.add(aNum); } for (int bNum : b) { hashSet.add(bNum); } Iterator<Integer> iterator = hashSet.iterator(); while(iterator.hasNext()){ System.out.print(iterator.next()+" "); }
数组的交集
给定两个数组:
int[] a = {1, 2, 3, 4, 5};
int[] b = {2, 3, 5, 6, 7};
输出:
3,4,5我的思路:与之前相同,强行跑遍历的算法肯定是不可取的,又想到了之前在一堆有重复数的数组中找出唯一一个没有重复的算法:
一是看到的最优解对自身进行^运算。
二是自己思考出的通过HashMap对每个数进行个数统计,如果为1则得出。同理得出此处交集的运算规则,统计每一个数的出现次数,如果为2,则是交集。
以下为代码实现:int[] a = {1, 2, 3, 4, 5}; int[] b = {2, 3, 5, 6, 7}; HashMap<Integer, Integer> hashMap = new HashMap(16); for (int i = 0; i < a.length; i++) { if (hashMap.get(a[i]) != null) { hashMap.put(a[i], hashMap.get(a[i]) + 1); } else { hashMap.put(a[i], 1); } } for (int i = 0; i < b.length; i++) { if (hashMap.get(b[i]) != null) { hashMap.put(b[i], hashMap.get(b[i]) + 1); } else { hashMap.put(b[i], 1); } } for (int i : hashMap.keySet()) { if (hashMap.get(i).equals(2)) { System.out.print(i+" "); } } }
如有更优解或解题思路出错,感谢指出!
-
用C语言学习高中数学:交集与并集
2021-02-23 11:29:00假设有集合A和B,A和B中都存在的公共元素的集合称为这两个集合的交集 (以后的理论部分省略“假设”,默认存在集合A和B) 并集 A和B中的所有元素(不包含重复的元素)的集合称为这两个集合的并集 代码如下: #...交集
假设有集合A和B,A和B中都存在的公共元素的集合称为这两个集合的交集
(以后的理论部分省略“假设”,默认存在集合A和B)
并集
A和B中的所有元素(不包含重复的元素)的集合称为这两个集合的并集
代码如下:
(以后的代码中的数据全部写死)
#include <stdio.h> #include <stdlib.h> #include <stdbool.h> int main() { int array1[5] = {1, 2, 3, 4, 5}; int array2[5] = {2, 3, 7, 8, 9}; // 计算交集 int array3[5] = {0}; int arr3_len = 0; for (int i = 0; i < 5; ++i) { for (int j = 0; j < 5; ++j) { if (array1[i] == array2[j]) { array3[arr3_len] = array1[i]; ++arr3_len; break; } } } printf("交集:["); bool is_first = true; for (int i = 0; i < arr3_len; ++i) { if (is_first == true) { printf("%d", array3[i]); is_first = false; } else { printf(", %d", array3[i]); } } printf("]\n"); // 计算并集 int array4[10] = {0}; int arr4_len = 0; for (int i = 0; i < 5; ++i) { array4[i] = array1[i]; ++arr4_len; } bool is_exist = false; for (int i = 0; i < 5; ++i) { for (int j = 0; j < arr4_len; ++j) { if (array2[i] == array4[j]) { is_exist = true; break; } } if (is_exist == false) { array4[arr4_len] = array2[i]; ++arr4_len; } else { is_exist = false; } } printf("并集:["); is_first = true; for (int i = 0; i < arr4_len; ++i) { if (is_first == true) { printf("%d", array4[i]); is_first = false; } else { printf(", %d", array4[i]); } } printf("]\n"); return 0; }
-
60 集合的交集、并集和差集运算
2021-11-24 09:49:44”符号,进行并集运算时使用“|”符号,进行差集运算时使用“-”符号,进行对称差集运算时使用“^”符号。 场景模拟:某大学的学生选课系统,学生选课完毕后,老师要对选课结果进行统计。这时,需要知道哪些学生既... -
求两个集合的交集和并集
2020-02-21 23:27:271、排序+双指针 交集: 用两个“指针”分别指向两个数组的头部。如果其中一个元素比另一个小,后移小的那个数组的指针;... public List intersection(int[] a, int[] b){//a和b已经排好序 List<Integer>... -
C语言/C++语言程序设计集合运算 集合的交集、并集、补集运算
2019-12-26 00:01:26使用C/C++实现集合的交集、并集、补集运算 不墨迹,直接上代码,祝大家学习愉快。 #include<stdio.h> #define MAX1 5 #define MAX2 4 void display(int a[],int n)//输出数组元素 { printf("\n"); for(int... -
链表实现集合的交叉并运算(c++).cpp
2017-12-17 23:41:46A和B的并集是将A和B的元素放到一起构成的新集合。给定集合A,B,定义运算∪如下:A∪B = {e|e∈A 或 e∈B}。A∪B称为A和B的并集。 交集 一个新的集合也可以通过两个集合"共"有的元素来构造。A和B的交集,写作A∩B,... -
EXCEL的交集和并集操作,空格 是默认的 range 的交集运算符
2022-01-26 17:48:21交集运算符 空格,可以是 EXCEL交集运算符 =G16:G18 G18:G20=G18得内容 如果两者没有交集会返回空! SUM(G10:G12 I10:I12) =#NULL!或 G10:G12 I10:I12=#NULL!...并集呢 也不能用VBA的 union() -
高中数学基础-1.1.3:集合的基本运算(1),交集与并集
2020-02-15 16:52:11理解两个集合交集与并集的概念和性质 求两个集合的交集与并集常用方法-——数轴法和图示法. 观察集合A,B,C元素间的关系: A={4,5,6,8} ,B={3,5,7,8} ,C={3,4,5,6,7,8} A={x|x是有理数},B={x|x是... -
链表的交集并集差集c语言.cpp
2019-12-24 22:54:09利用带头结点的单链表实现两个集合的并、交、差运算。(难易程度:低) [实验目的] 1、掌握线性表的链表存储结构。 2、掌握在单链表上基本操作的实现。...4、要求不改变原来的集合,并集、交集和差集分别另外存放。 -
单链表的并集与交集(C语言)
2013-10-10 17:05:26实现单链表的并集与交集的程序,程序首先由用户指定输入两个任意长短的单链表,然后程序将这两个单链表的并集和交集求出来并显示。程序里面包含了单链表的头插法和尾插法两种操作。 -
求单链表的交集和并集
2022-03-19 10:25:47求单链表的交集和并集 -
python获得两个数组交集、并集、差集的方法
2020-12-23 23:15:25本文实例讲述了python获得两个数组交集、并集、差集的房部分。分享给大家供大家参考。具体如下: 1. 获取两个list 的交集 #方法一: a=[2,3,4,5] b=[2,5,8] tmp = [val for val in a if val in b] print tmp #[2, 5]... -
集合交集,并集,差集运算
2019-07-01 18:52:53并集操作有个问题,相同的元素会重复添加进来。可以先差集,再并集 public static void main(String[] args) { List<User> a = new ArrayList(); a.add(new User(1L, 1L)); a.add(new User(2L, 2L)); List... -
交集和并集傻傻分不清楚(解决办法)
2020-09-27 21:00:58目录----------前言------------交集和并集的符号巧记基本初等函数 ----------前言------------ 因为高中数学没学好,带有些主观看法 总是记忆混淆 交集和并集,最近在准备升本考试,这些逃不过去了,从容面对一下,... -
2个集合交集与并集(单链表).doc
2021-05-26 04:05:36/********************************************************function: 使用单链表作为数据结构求2个集合的交集和并集programmer: LiCuixia@安师数计学院12软件helper:LiuMenglu@安师数计学院12软件data: 2014.2.26... -
【100+ python基础入门-39】Python集合的交集和并集操作
2021-12-04 17:09:48集合这种数据类型和我们数学中所学的集合很是相似,数学中堆积和的操作也有交集,并集和差集操作,python集合也是一样。 -
java输出数组的交集、并集
2021-08-14 11:15:14分别输出两个数组的交集和并集 import java.util.*; public class Main { /** * 两个数组,分别输出它的交集和并集 */ public static void main(String[] args) { int[] arr1 = {1,5,2,4,8,7}; int[] arr2 = {... -
C数据结构——链表求交集与并集
2017-03-29 22:54:08p3)//逻辑非运算(!),即当p3=NULL时,!p3=1,为真值(true),执行语句块,反之,当p3!=NULL时,!p3=0,为假值(false),不执行语句块 { s = (Link)malloc(sizeof(Node)); s->data = p2->data; s->next ... -
集合的运算(交集、并集).pdf
2021-11-13 14:14:16集合的运算(交集、并集).pdf -
数据库 - 交集、并集和补集
2019-10-25 11:22:40交集、并集和补集 更新时间:2019-10-09 16:52:19 编辑我的收藏 本文为您介绍UNION、UNOIN ALL、UNION DISTINCT并集,INTERSECT、INTERSECT ALL、INTERSECT DISTINCT交集,EXCEPT、EXCEPT ALL、EXCEPT DISTINCT补... -
集合的运算(交集、并集).doc
2021-10-03 21:53:47集合的运算(交集、并集).doc -
Oracle的并集、交集、差集运算
2021-03-25 15:37:07Oracle中有并集、交集、差集的3种运算 1. union : 得到两个查询结果的并集,并且自动去掉重复行,不会排序。 union all: 得到两个查询结果的并集,不会去掉重复行,也不会排序 2. intersect: 得到两个查询结果的... -
定义域是交集还是并集
2020-12-20 23:20:27定义域是这两个函数的交集还是并集是交集。因为要满足定义域中任意x在y中都有一个唯一确定的值(而这个y是对于两个函数的y,如果是并集会导致某个... 交集和并集运算结果是集合,集合是表示定义域的方法 但是要注意的... -
Oracle中关于并集/交集/差集的运算
2021-05-03 10:24:181.并集的运算 select name from test1 union [all] select name from test2; 使用union时,默认将对结果进行排序,union all则不1.并集的运算select name from test1union [all]select name from test2;使用union时... -
集合的基本运算(交集、并集).ppt
2021-11-13 06:48:28集合的基本运算(交集、并集).ppt -
通过Redis实现数据的交集、并集、补集
2022-05-15 16:46:08我们在本地有多个文本文件,每个文件里面存了很多的32位的字符串作为用户的唯一标识,每个用户存做一行,假如我们每天都有非常大规模的用户,这样我们可能在工作中就存在需要对这些用户进行交集、并集或补集等处理,... -
站长在线Python精讲:Python中集合的交集、并集、差集和对称差集运算方法详解
2021-11-22 23:32:56主要讲的是集合运算的相关的概念,及运算方法,包括:集合的交集、集合的并集、集合的差集、集合的对称差集、集合的交集运算方法、集合的并集运算方法、集合的差集运算方法、集合的对称差集运算方法。