java 实现数组的交集和并集

import java.util.ArrayList;
import java.util.HashSet;
import java.util.Iterator;
import java.util.Set;


public class Test {

	/**
	 * @param args
	 */
	public static void main(String[] args) {
		// TODO Auto-generated method stub
		ArrayList<Integer> list1 = new ArrayList<Integer>();
		for(int i = 0 ; i < 5; i ++){
			list1.add(i);
		}
		list1.add(4);

		ArrayList<Integer> list2 = new ArrayList<Integer>();
		for(int i = 0 ; i < 10; i ++){
			list2.add(i);
		}
		
		
		deleteRepeatData(list1);
		deleteRepeatData(list2);
		
		intersect(list1, list2);
		Integer integer[] = union(list1, list2);
		for(int i = 0 ; i < integer.length ; i ++){
			System.out.println("union(list1, list2);== "+ integer[i]);
		}
		
		
	}

	/**
	 * 数组的交集
	 * @param list1
	 * @param list2
	 */
	private static void intersect(ArrayList<Integer> list1,
			ArrayList<Integer> list2) {
		int size1 = list1.size();
		int size2 = list2.size();
		
		if(size1 > size2){
			for(int i = 0 ; i < size1 ; i ++){
				for(int k = 0 ; k < size2 ; k ++){
					if(list1.get(i) == list2.get(k)){
						System.out.println("list1.get("+ i + ") == " + list1.get(i));
					}
				}
			}
			
		}else{
			for(int i = 0 ; i < size2 ; i ++){
				for(int k = 0 ; k < size1 ; k ++){
					if(list2.get(i) == list1.get(k)){
						System.out.println("list2.get("+ i + ") == " + list2.get(i));
					}
				}
			}
		}
	}

	/**
	 *去掉数组中重复的数据 
	 * @param numList
	 */
	private static void deleteRepeatData(ArrayList<Integer> numList) {

		Iterator<Integer> iterator = numList.iterator();
		int temp = -1;
		if(iterator.hasNext()){
			temp = iterator.next();
		}
		
		while(iterator.hasNext()){
			int i = iterator.next();
			if(i == temp ){
				iterator.remove();
			}else{
				temp = i;
			}
		}
		System.out.println(numList);
		
	}
	
	/**
	 * 数组的并集
	 * 求两个字符串数组的并集,利用set的元素唯一性
	 * @param arrayList1
	 * @param arrayList2
	 * @return
	 */
	public static Integer[] union(ArrayList<Integer> arrayList1,ArrayList<Integer> arrayList2){
		
		Set<Integer> set = new HashSet<Integer>();
		for(Integer in : arrayList1){
			set.add(in);
		}
		
		for(Integer in : arrayList2){
			set.add(in);
		}
		Integer[] integers = new Integer[]{};
		set.toArray(integers);
		return set.toArray(integers);
		
	}
	
	
}
 

猜你喜欢

转载自1002878825-qq-com.iteye.com/blog/1633754
今日推荐