因为某个业务根据某个字段去重,记不得从哪学到的,写了个方法:
public static <T> Predicate<T> distinctByKey(final Function<? super T, ?> keyExtractor) {
final Map<Object,Boolean> maps = new ConcurrentHashMap<>();
return t -> maps.putIfAbsent(keyExtractor.apply(t), Boolean.TRUE) == null;
}
因为在java8 中,filte参数当中的类型是predicate<T>,返回一个经过处理的流,操作的时候只需要
数据源.stream.filter(....dsitinctByKey(Class名::get..())).后续操作