`
抛出异常的爱
  • 浏览: 628245 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

两个集合求交集

阅读更多
package aasdfsa;

import java.util.ArrayList;
import java.util.HashSet;
import java.util.List;
import java.util.Random;
import java.util.Set;

import org.apache.commons.collections.Bag;
import org.apache.commons.collections.bag.HashBag;

public class TwoArrayList {
	/**
	 * @param args
	 */
	public static void main(String[] args) {
		TwoArrayList t = new TwoArrayList();
		
		List<String> one = new ArrayList<String>();
		List<String> two = new ArrayList<String>();
		long now = System.currentTimeMillis();
		int bigtime = 1000;//运行时间
		Random r = new Random();
		int key = 100000;//取值范围
		for(;;){
			int rr = r.nextInt(key);
			one.add(""+rr);
			rr = r.nextInt(1000);
			if(r.nextBoolean())two.add(""+rr);
		
			if(now+bigtime < System.currentTimeMillis()){
				break;
			}
		}
		System.out.println("first:"+one.size());
		System.out.println("next:"+two.size());
		System.out.println("union:"+t.union(one,two).size());

	}
	public List<String> union(List<String> one ,List<String> two){
		Bag bag1 = new HashBag(one);
		Bag bag2 = new HashBag(two);
		Set<String> set = new HashSet<String>();
		List<String> result = new ArrayList<String>();		
		set.addAll(one);
		set.addAll(two);
		System.out.println("totle:"+set.size());
		for (String temp : set) {
			long first = bag1.getCount(temp);
			long secend = bag2.getCount(temp);
			for(int i = 0 ; i < Math.min(first, secend);i++){
				result.add(temp);
			}			
		}
		return result;
	}

}
分享到:
评论
3 楼 <>++< 2011-10-18  
		public static List<String> listA = new ArrayList<String>(Arrays.asList("a",
				"b", "c", "c", "d"));
		public static List<String> listB = new ArrayList<String>(Arrays.asList("d",
				"b", "c", "c", "d"));
		
		listA = new ArrayList<String>(new HashSet<String>(listA));
		listA.retainAll(listB);

		for (String str : listA) {
			System.out.println(str);
		}




LZ 是这意思么?
2 楼 抛出异常的爱 2010-04-06  
我费心写这个是由于list中可能会有重复记录
重复次数可能很多。。。。
1 楼 chenyulong1 2010-04-06  
不知博主是否己找到心怡的工作,看到这个帖子。写了两个方法。
public static List<String> union(List<String> one, List<String> two) {
		Set<String> t1 = new TreeSet<String>();
		t1.addAll(one);
		Set<String> t2 = new TreeSet<String>();
		t2.addAll(two);
		List<String> result = new ArrayList<String>();
		for (String s : t1.size() < t2.size() ? t1 : t2) {
			if (t1.size() < t2.size() ? t2.contains(s) : t1.contains(s)) {
				result.add(s);
			}
		}
		return result;
		
	}

	public static List<String> union(List<List<String>> list) {
		List<String> result = list.get(0);
		if (list.size() == 0)
			return result;
		for (int i = 1; i < list.size(); i++) {
			result = union(result, list.get(i));
		}
		return result;
	}

相关推荐

    求两集合的交集 求两个集合的交集

    总结起来,C++ 中求两个集合交集的方法主要包括使用`std::set_intersection`函数以及手动迭代比较。前者在效率和简洁性上更具优势,后者则更为灵活,适应性更强。在实际应用中,应根据具体需求选择合适的方法。在...

    N个集合求交集C语言代码

    `interset()`函数接收两个链表的头结点,并返回一个新的链表,该链表表示这两个集合的交集。具体实现是:遍历第一个链表中的所有元素,对于每一个元素,在第二个链表中查找是否存在相同的元素。如果存在,则将该...

    求两个int型集合的交集

    求两个整型(int型)集合的交集,所用到的语言为C#语言。

    取两个集合的交集

    根据给定的信息,本文将详细解释“取两个集合的交集”的相关概念、实现方法以及具体的应用场景。本文主要分为以下几个部分:集合的基本概念、如何计算两个集合的交集、示例代码分析与理解。 ### 一、集合的基本概念...

    MATLAB求交集和并集代码

    根据给定的部分内容,我们可以逐步解析并完善代码,以实现求两个集合的交集和并集的功能。 ##### 3.1 定义符号变量 ```matlab syms abcdefghij ``` 这里使用`syms`定义了十个符号变量`a`至`j`,通常用于数学表达式...

    c++程序设计实现集合交集并集差集.pdf

    jiao 函数,用于计算两个集合的交集;bing 函数,用于计算两个集合的并集;cha 函数,用于计算两个集合的差集。 最后,我们在 main 函数中演示了如何使用 int_set 类,例如创建集合、输入集合、删除元素、添加元素...

    用顺序表完成2个集合的交集与并集以及各个集合的情况

    1.有序顺序表的元素按照从小到大有序存储; 2.实现有序顺序表的类模板,它的操作如下: ...3.用有序顺序表表示集合,实现两个有序顺序表的并和交(并和交仍是有序顺序表)并分析它们的时间复杂度;

    求两个数组的交集

    总结来说,求两个数组的交集可以通过哈希表或集合数据结构实现,两者都能在O(n)的时间复杂度内完成任务。选择哪种方法取决于具体需求,如是否考虑元素顺序、对空间复杂度的要求以及所用编程语言的支持。

    求两个有序单链表的交集

    集合的交集、并集、差集运算是考察的常规内容,这里给出交集的代码,并集跟差集的类似

    集合的交集

    求两个集合的交集。 【输入形式】 从标准输入中读取两行以空格符分隔的正整数,每行整数的个数不大于100,整数值不超过1000,可能有重复的数。 【输出形式】 将每行看成一个集合,将交集元素...

    C++ stl set 求集合的交集并集差集

    C++ stl set 求集合的交集并集差集 编译环境为dev C++

    用于处理数据,求两个集合的交集、并集、补集。附源码。

    用于处理数据,求两个集合的交集、并集、补集。附源码。

    集合运算 求并集和交集

    集合的交集包含同时存在于两个集合中的元素。利用顺序表求交集的步骤如下: 1. 创建一个空顺序表,用于存储交集。 2. 遍历第一个集合,对于每个元素,检查它是否也在第二个集合中。 3. 如果元素在第二个集合中存在...

    利用带头结点的单链表实现两个集合的并、交、差运算.docx

    该文档还将提供一种方法来过滤重复的数据,并显示两个集合的内容及其并集、交集和差集的内容。 在概要设计图中,我们可以了解到该文档的设计思路。该设计思路主要是使用带头结点的单链表来存储两个集合中的元素,并...

    两个有序数组求交集,C++

    所谓“交集”,是指两个集合共有的元素组成的集合。当两个数组均为有序数组时,求解交集的操作可以变得更加高效。 #### 2. 代码解析 下面是对给定代码的详细分析: ```cpp #include using namespace std; int ...

    两个矩形求交快速算法

    在计算机科学领域,特别是在图形学、游戏开发以及空间数据处理中,两个矩形求交集的快速算法是一项基础且关键的技术。本文旨在深入探讨这一算法的原理与实现,特别是针对不同矩形相对位置下的交集计算策略。 ### ...

    算法设计求交集

    设 A={a1,a2,…,an}, B={b1,b2,…,bn}是整数集合,其中 m=O(log n)。要求设计一个算法求集 合 C=A∩B。提示:使用二分查找技术。

    Python 两个列表的差集、并集和交集实现代码

    两个集合 A 和 B 的交集(A ∩ B)是指同时属于集合 A 和集合 B 的所有元素组成的集合。 **示例代码:** ```python if __name__ == '__main__': a_list = [1, 2, 3, 4, 5] b_list = [1, 4, 5] ret_list = list(...

    初等数组求交集

    对于本题目来说,主要任务是通过两个数组(视为集合)找出它们之间的交集元素。具体而言,程序接收两个数组作为输入,一个包含10个整数元素,另一个包含15个整数元素。然后,通过比较这两个数组中的元素,找出同时...

Global site tag (gtag.js) - Google Analytics