public class ListUtil { /** * 利用map计算两个list的不同元素 * 时间复杂度2(n+m) * 如果long List在前,map#get次数较多,影响性能 * * @param longList 长度大的列表 * @param shortList 长度小的列表 * @param <T> T必须重写equals、hashcode方法 * @return Diff */ public static <T> List<T> getDiffElement(List<T> longList, List<T> shortList) { Map<T, Integer> map = new HashMap<>(longList.size() + shortList.size()); List<T> diff = new ArrayList<>(); for (T t : longList) { map.put(t, 1); } for (T t : shortList) { Integer value = map.get(t); if (value != null) { map.put(t, ++value); continue; } map.put(t, 1); } for (Map.Entry<T, Integer> entry : map.entrySet()) { if (entry.getValue() == 1) { diff.add(entry.getKey()); } } return diff; } }
快速计算两个List的不同元素
最新推荐文章于 2021-12-22 20:24:41 发布