在实现数据挖掘一些算法或者是利用空间向量模型来发现相似文档的时候,会遇到求两个集合的交集的情况。以前一般是采用比较笨拙的办法,依次遍历其中一个集合的元素,然后判断它是否包含在另一个集合中。这样做非常机械繁琐,代码编得让人心烦,其实java的api中提供了对集合进行交、并、差运算的功能,灰常强大!看下面的例子:
public class SetOpt {
public List intersect(List ls, List ls2) {
List list = new ArrayList(Arrays.asList(new Object[ls.size()]));
Collections.copy(list, ls);
list.retainAll(ls2);
return list;
}
public List union(List ls, List ls2) {
List list = new ArrayList(Arrays.asList(new Object[ls.size()]));
Collections.copy(list, ls);
list.addAll(ls2);
return list;
}
public List diff(List ls, List ls2) {
List list = new ArrayList(Arrays.asList(new Object[ls.size()]));
Collections.copy(list, ls);
list.removeAll(ls2);
return list;
}
public static void main(String[] args) {
SetOpt opt = new SetOpt();
List l1 = new ArrayList();
l1.add(1);
l1.add(2);
l1.add(3);
l1.add(4);
List l2 = new ArrayList();
l2.add(3);
l2.add(4);
l2.add(5);
l2.add(6);
List intersectList = opt.intersect(l1, l2);
System.out.println("交集:");
for (int i = 0; i < intersectList.size(); i++) {
System.out.print(intersectList.get(i) + " ");
}
System.out.println();
List unionList = opt.union(l1, l2);
System.out.println("并集:");
for (int i = 0; i < unionList.size(); i++) {
System.out.print(unionList.get(i) + " ");
}
System.out.println();
List diffList = opt.diff(l1, l2);
System.out.println("差集:");
for (int i = 0; i < diffList.size(); i++) {
System.out.print(diffList.get(i) + " ");
}
System.out.println();
}
}
测试结果:
交集:
3 4
并集:
1 2 3 4 3 4 5 6
差集:
1 2
--------------------------------------------------------------------------------------------------------------------------------
多集合的交集:
public List<Integer> retainAllList(List<List<Integer>> allList)
{
List<Integer> listTempA = new ArrayList<Integer>();
for(int i=0;i<allList.size();i++)
{
listTempA = allList.get(i);
for(List<Integer> listTempB:allList)
{
listTempA.retainAll(listTempB);
}
}
return listTempA;
}
注意:在进行两个集合(操作集合和被操作集合)交、并、差操作时,一定要先将操作集合拷贝一份,以拷贝的集合作为操作集合来进行运算。否则,将改变原来操作集合的内容。
分享到:
相关推荐
C++程序设计实现集合交集并集差集 本文主要介绍了使用 C++ 语言实现集合的交集、并集和差集运算。该程序设计了一个名为 int_set 的类,用于表示一个整数集合。该类中包含了多个成员函数,用于实现集合的基本运算,...
c++程序设计实现集合交集并集差集.docx
050.Python集合_特点_创建和删除_交集并集差集运算.mp4
利用带头结点的单链表实现两个集合的并、交、差运算。(难易程度:低) [实验目的] ...3、显示两个集合的内容及其并集、交集和差集的内容。 4、要求不改变原来的集合,并集、交集和差集分别另外存放。
常见的集合运算包括交集(两个集合共有的元素构成的新集合)、并集(两个集合所有元素构成的新集合)以及差集(一个集合去除另一个集合中的元素后剩下的元素构成的新集合)。 ### 二、程序代码分析 #### 1. 数据...
集合运算通常包括求并集、交集和差集等操作,这些在编程中非常常见,特别是在处理数据时。本篇文章将深入探讨如何用线性表,特别是顺序表来实现集合的求并集和交集运算。 首先,我们需要理解什么是顺序表。顺序表是...
自创 链表 C++ 集合运算,是学习C++常会遇到的题目
本项目专注于使用Canvas实现ROI(感兴趣区域)的功能,包括绘制、交互以及几何形状的集合运算。下面将详细介绍这个项目的各个知识点。 1. **Canvas API基础**: Canvas是HTML5的一个元素,通过JavaScript提供了一...
2. 对并集和对称差集进行异或运算得到交集。 3. 转换成列表输出。 **注意:**此方法同样不适用于列表元素为字典的情况。 ### 总结 以上提供了三种不同的方法来实现 Python 中列表的差集、并集与交集。根据实际情况...
写得比较简单,随便看看就好 该代码是离散数学的一些简单运算
可以通过两次差集运算得到,或者先求交集再求两集合的并集,去掉交集部分。 5. 子集(Subset)和真子集(Proper Subset):判断一个集合是否是另一个集合的子集或真子集,可以通过遍历并逐一比较元素来实现。 6. ...
Delphi 两个多边形求交集、并集、差集的源码,使用的是D5,非常古老的版本了,但能解决问题,程序使用标记法,速度非常快,解决了C语言中关于高精度重叠边的问题,示例程序是从CAD中读取多边形数据,方便演示各种...
通过上述分析,我们可以看到如何利用这些基本操作来构建更复杂的集合运算,如交集、并集和差集。这不仅加深了对C++链表的理解,也为实际编程中解决数据处理问题提供了有效工具。在实际应用中,还可以进一步优化算法...
对于多个数组而言,集合操作(如交集、并集、差集)则更为常见。这些操作在数据分析、数据清洗等领域尤为重要。 #### 1.2 LINQ简介 LINQ 是一种强大的查询语言,它将查询能力引入到 C# 中。LINQ 提供了一系列的方法...
主要介绍了Java计算交集,差集,并集的方法,结合实例形式简单分析了java集合运算的简单操作技巧,需要的朋友可以参考下
在JavaScript中,集合运算通常指的是对数组或类数组对象进行的交集、并集、差集和去重等操作。随着ECMAScript的发展,从ES5到ES6,这些操作的实现方式也有了较大的变化。下面,我们将详细介绍使用ES5和ES6语法来实现...
该集合运算器可以进行交集、并集和差集运算,适合数据结构初学者学习和实践。 1. 集合运算器的数据结构:单链表 在本资源中,使用单链表来实现集合的数据结构。单链表是一种基本的数据结构,通过链表可以方便地...
根据给定的文件信息,本文将详细介绍C++语言中如何实现集合的基本运算——交集、并集和差集。此代码示例展示了如何利用链表结构来存储集合,并通过具体的函数实现了这些运算。 ### 一、集合的概念及运算 #### 1. ...
在数学中,我们经常需要对矢量之间的关系进行分析,包括求交集、并集和差集等运算。下面将对这些概念进行具体解释。 1. 交集: 矢量的交集是指两个矢量中共同存在的元素所构成的集合。假设有两个矢量A和B,它们分别...
在C语言中,求解集合的交集、并集和差集是算法和数据结构基础中的重要知识点。集合作为数学中的一个基本概念,它表示具有某种特定性质的事物的总体,而集合间的这些基本运算在编程中常常被用来处理相似类型的问题。 ...