两个集合求交集

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;
	}

}

你可能感兴趣的:(java,apache,工作)