/**
* 过滤接口函数
*
* @param keyExtractor 属性引用
* @param <T> 属性引用泛型
* @return Predicate 函数接口
*/
public static <T> Predicate<T> distinctByKey(Function<? super T, ?> keyExtractor) {
Set<Object> seen = ConcurrentHashMap.newKeySet();
return t -> seen.add(keyExtractor.apply(t));
}