JAVA快速比对两组数据,并返回比对结果


import java.util.LinkedHashMap;
import java.util.List;
import java.util.Map;

import com.google.common.collect.Lists;

public class CompareListUtil {

    /**
     * 1都有 2新有旧无 3旧有新无
     * 
     * @param oldList
     *            旧list
     * @param newList
     *            新list
     * @return list1都有 list2新有旧无 list3旧有新无
     */
    private static Map> compair(List oldList, List newList) {
        Map map = new LinkedHashMap(oldList.size() + newList.size());
        for (String olds : oldList) {
            map.put(olds, 3);
        }
        for (String news : newList) {
            Integer count = map.get(news);
            if (count != null) {
                map.put(news, 1);
            } else {
                map.put(news, 2);
            }
        }
        List list1 = Lists.newArrayList();
        List list2 = Lists.newArrayList();
        List list3 = Lists.newArrayList();
        // 检查
        for (Map.Entry entry : map.entrySet()) {
            switch (entry.getValue()) {
            case 1:
                list1.add(entry.getKey());
                break;
            case 2:
                list2.add(entry.getKey());
                break;
            case 3:
                list3.add(entry.getKey());
                break;
            default:
                break;
            }
        }
        Map> maps = new LinkedHashMap>();
        maps.put("list1", list1);
        maps.put("list2", list2);
        maps.put("list3", list3);
        return maps;
    }

    public static void main(String[] args) {
        List list11 = Lists.newArrayList();
        List list22 = Lists.newArrayList();
        for (int i = 0; i < 10000; i++) {
            list11.add("XH" + i);
        }
        for (int i = 0; i < 10000; i++) {
            list22.add("XH" + (i + 5));
        }
        Map> map = compair(list11, list22);
        List list1 = map.get("list1");
        List list2 = map.get("list2");
        List list3 = map.get("list3");
        System.out.println(list1.toString());
        System.out.println(list2.toString());
        System.out.println(list3.toString());
    }
}

你可能感兴趣的:(java工具)