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

论坛 期权论坛 编程之家     
选择匿名的用户   2021-5-29 17:56   11   0


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

分享到 :
0 人收藏
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

积分:3875789
帖子:775174
精华:0
期权论坛 期权论坛
发布
内容

下载期权论坛手机APP