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