Java代码 :
public class TestIntersection {
private static final Integer ONE = new Integer(1);
public static void main(String[] args) {
// a集合[a,a,b,b,b,c]
List<String> a = Arrays.asList("a", "a", "b", "b", "b", "c");
// b集合[a,b,b,c,c]
List<String> b = Arrays.asList("a", "b", "b", "c", "c");
Map mapa = mapForCollection(a);
Map mapb = mapForCollection(b);
// 将两个集合里不重复的元素加进来,然后会依次遍历元素的出现次数
Set set = new HashSet(a);
set.addAll(b);
List<String> result = new ArrayList<String>();
for (Object obj : set) {
for (int i = 0, m = Math.min(getCountsFromMap(obj, mapa), getCountsFromMap(obj, mapb)); i < m; i++) {
result.add((String) obj);
}
}
// 看下期待的结果是不是[a,b,b,c]
System.out.println(result);
}
/**
* 循环遍历集合,并对每一个元素出现的次数计数<br/>
* 最终返回类似于{A:1,B:3,C:3}这样的map
*
* @param a
* @return
*/
private static Map mapForCollection(Collection a) {
Map map = new HashMap();
Iterator it = a.iterator();
while (it.hasNext()) {
Object obj = it.next();
Integer count = (Integer) map.get(obj);
if (count == null) {
// 表明该元素第一次出现
map.put(obj, ONE);
} else {
map.put(obj, new Integer(count.intValue() + 1));
}
}
return map;
}
private static int getCountsFromMap(Object obj, Map map) {
Integer count = (Integer) map.get(obj);
return count != null ? count.intValue() : 0;
}
}
可以看到,先对两个不同的集合进行元素标记,并记下各自每个元素出现的次数,然后提取出两个集合中不重复的元素,
取两者中元素出现次数最少的数值,进行循环添加
分享到:
相关推荐
上面以两个集合为例说明了交集和并集的求法,事实上,上述算法可以很方便的扩展到3个或3个以上的集合 的求交集和求并集。另外求并集时,由于哈希表的值(VALUE)部分不需要用到,所以这个数据结构也可以更换为 ...
写得比较简单,随便看看就好 该代码是离散数学的一些简单运算
JAVA获取两个数据量较大的ArrayList的交集、差集以及并集,记录一下以便查阅。JAVA获取两个数据量较大的ArrayList的交集、差集以及并集,记录一下以便查阅。JAVA获取两个数据量较大的ArrayList的交集、差集以及并集...
常用的Java类集合。
使用两个list,String>> 求交集和补集。
下面小编就为大家分享一篇java8 集合求差集、并集、交集的实例,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
今天突然想Java如何计算集合的交差并集,主要是看Python语言的时候想起来的。下面这篇文章主要给大家介绍了关于java中计算集合的交差并集的相关资料,文中通过示例代码介绍的非常详细,需要的朋友可以参考借鉴,下面...
比较两集合,返回两集合的补集、交集、差集、并集
义一个整数集合类integerSet。这种类型的对象可以存储10个20~80...(2) 输出两个集合对象的交集。 (3) 输出两个集合对象的并集。 (4) 将一个整型数据插入到一个集合对象中。 (5) 从一个集合中删除某一个元素。
在下不才初学java,用java写了一个求两个集合的集合运算,若程序中有漏洞请各位大虾指出谢谢啦!
主要介绍了Java8 Stream对两个 List 遍历匹配数据的优化处理操作,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
java求集合的交集源码cs-制作-一个-索引器-实验室 学习目标 了解 Web 索引器的设计并填写缺失的方法。 从 Java Collections Framework (JCF) 中选择适当的数据结构。 使用 Java 的Map接口和HashMap实现。 使用Set...
这个Java程序使用Scanner对象从控制台接收输入的两段文字,然后将这两段文字分别转换为Set集合,最后通过retainAll方法找出两个集合的交集,即相同的文字。如果找到相同文字,则将其打印输出到控制台。
CIDR分析仪一个Java程序,它将接收CIDR块的集合并比较这些集合的包含,交集和邻接,并将结果返回到矩阵中要编译和运行代码,请在src目录中运行“ make”,这将编译两个java文件。 然后运行“ java Analyze”以对data...
【问题描述】设A和B为两个集合,A={a,b,c,d},B={b,c,d,e},则A与B的并集为:{a,b,c,d,e,f}; A与B的差集为:{a,b};A与B的交集为:{c,d}。 请编程,创建两个HashSet对象,其中保存整数。然后求它们的并集、差集和交集。...
作者采用了独特的方法将数据结构分成说明和实现两部分,并充分利用了已有的数据结构库(Java集合类API)。本书分为四个部分:第一部分讨论适合大多数应用的集合类API的一个子集,并覆盖基本的算法分析技术、递归和...
有10个硬盘,有两个重要的属性:价格和容量。编写一个应用程序,使用TreeMap,V>类,分别按照价格和容量排序并输出10个硬盘的详细信息 9_5.编写一个应用程序,要求将LinkedList创建的对象写入到文件,然后读出一个...
作者采用了独特的方法将数据结构分成说明和实现两部分,并充分利用了已有的数据结构库(Java集合类API)。本书分为四个部分:第一部分讨论适合大多数应用的集合类API的一个子集,并覆盖基本的算法分析技术、递归和...
以前写了一个java的正规表达式的java工具类,分享一下,有用到的欢迎下载使用。 如果你有常用的定义好的,且测试通过的正规表达式,欢迎跟贴,也让我享用一下 . 类中用到了 jakarta-oro-2.0.jar 包,请大家自己在 ...
SWT是IBM开发一套跨平台的GUI开发框架。为什么IBM要创建另一种GUI呢?为什么他们不使用现有的Java ...换句话说,如果平台A有窗口组件1-40而平台B有窗口组件20-25,那么这个跨平台的AWT框架只能提供这两个集合的交集。