比较两个list

比较两个list,分别返回交集,list1的差集,list2的差集

package com.candao.testProject.collection;

import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

public class ListCompare {

	public static void main(String[] args) {
		List<String> list1 = new ArrayList<String>();
		List<String> list2 = new ArrayList<String>();
		list1.add("1");
		list1.add("2");
		list1.add("3");
		list1.add("a");
		list1.add("c");
		list2.add("1");
		list2.add("2");
		list2.add("3");
		list2.add("b");
		list2.add("d");
		ListCompare.compareUnionList(list1, list2);
	}
	
	/**
	 * 比对两个list中的元素
	 * @param list1
	 * @param list2
	 * @return
	 */
	public static List<String> compareUnionList(List<String> list1,List<String> list2){
		List<String> diffList1 = new ArrayList<String>();
		List<String> diffList2 = new ArrayList<String>();
		List<String> same = new ArrayList<String>();
		List<String> maxList = list1;
		List<String> minList = list2;
		if(list2.size() > list1.size()){
			maxList = list2;
			minList = list1;
		}
		Map<String,Integer> map = new HashMap<String,Integer>(maxList.size());
		for(String string : maxList){
			map.put(string, 1);
		}
		for(String string : minList){
			if(map.get(string) != null){
				map.put(string, 2);
				same.add(string);
				continue;
			}
			diffList2.add(string);
		}
		System.out.println("相同的元素:"+same);
		for(Map.Entry<String, Integer> entry : map.entrySet()){
			if(entry.getValue() == 1){
				diffList1.add(entry.getKey());
			}
		}
		System.out.println("list1中独有的元素:"+diffList1);
		System.out.println("list2中独有的元素:"+diffList2);
		return diffList1;
	}
	
}

参考:http://www.360doc.com/content/12/1112/08/1301843_247326998.shtml

猜你喜欢

转载自wzf7065.iteye.com/blog/2265944