今天在工作中用到了根據集合中對象的某個屬性來去重,找了很多方法,都比較麻煩,最后發現了一個巨簡單的方法
public class Test { public static void main(String[] args) { List<User> list = new Lists.newArrayList(); list.add(new user(1,"張三","上海")); list.add(new user(2,"李四","北京")); list.add(new user(3,"王五","濟南")); list.add(new user(4,"李四","北京")); // 根據list中的City城市來去重 newList = list.stream().filter(distinctByKey(User::getCity)).collect(Collectors.toList()); } private static <T> Predicate<T> distinctByKey(Function<? super T, Object> keyExtractor) { Map<Object, Boolean> seen = new ConcurrentHashMap<>(); return t -> seen.putIfAbsent(keyExtractor.apply(t), Boolean.TRUE) == null; } }
最主要的是 distinctByKey
方法,實現了根據集合某個屬性去重,在結合Java8的流中的篩選 filter
,最終實現了最簡單的List集合根據對象某個屬性去重
原文鏈接:https://blog.csdn.net/weixin_45768481/article/details/106268221