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

本文介绍了一个实用的Java方法,用于比较两个字符串列表的差异,通过将列表元素映射到整数值来标识共有、新增和已删除的条目,从而帮助理解和处理数据变更。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >


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<String, List<String>> compair(List<String> oldList, List<String> newList) {
        Map<String, Integer> map = new LinkedHashMap<String, Integer>(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<String> list1 = Lists.newArrayList();
        List<String> list2 = Lists.newArrayList();
        List<String> list3 = Lists.newArrayList();
        // 检查
        for (Map.Entry<String, Integer> 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<String, List<String>> maps = new LinkedHashMap<String, List<String>>();
        maps.put("list1", list1);
        maps.put("list2", list2);
        maps.put("list3", list3);
        return maps;
    }

    public static void main(String[] args) {
        List<String> list11 = Lists.newArrayList();
        List<String> 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<String, List<String>> map = compair(list11, list22);
        List<String> list1 = map.get("list1");
        List<String> list2 = map.get("list2");
        List<String> list3 = map.get("list3");
        System.out.println(list1.toString());
        System.out.println(list2.toString());
        System.out.println(list3.toString());
    }
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值