第一种方法:如果需要返回整个对象的列表,先过滤再返回
List<Long> groupIdList = stepGroupList.stream().filter(distinctByKey(klunStepGroup -> klunStepGroup.getId())).collect(Collectors.toList());
/**
* 根据某个属性去重
* @param keyExtractor
* @param <T>
* @return
*/
protected static <T> Predicate<T> distinctByKey(Function<? super T, ?> keyExtractor) {
Map<Object,Boolean> seen = new ConcurrentHashMap<>();
return t -> seen.putIfAbsent(keyExtractor.apply(t), Boolean.TRUE) == null;
}
第二种方法:只需要返回某个属性的列表,先返回再去重
List<Long> groupIdList = stepGroupList.stream().map(KlunStepGroup::getId).distinct().collect(Collectors.toList());