private static <T> Predicate<T> distinctByKey(Function<? super T, Object> keyExtractor) {
Map<Object, Boolean> seen = Maps.newConcurrentMap();
// return new Predicate<T>() {
// @Override
// public boolean test(T t) {
// return seen.putIfAbsent(keyExtractor.apply(t), Boolean.TRUE) == null;
// }
// };
return t -> seen.putIfAbsent(keyExtractor.apply(t), Boolean.TRUE) == null;
}
filter(Predicate(test方法))
Function<? super T, Object> keyExtractor.apply()