`
抛出异常的爱
  • 浏览: 629464 次
  • 性别: 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. 如果元素在第二个集合中存在...

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

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

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

    本文档详细阐述了如何利用带头结点的单链表来实现两个集合的并集、交集和差集运算。 首先,在题目重述部分,我们明确了解决问题的目标,即通过带头结点的单链表结构来构建并、交、差运算的具体实现。头结点的存在是...

    两个矩形求交快速算法

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

    算法设计求交集

    设 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