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