java8 stream distinct by key

public static <T> Predicate<T> distinctByKey(Functionsuper T, ?> keyExtractor) {
    Map, Boolean> seen = new ConcurrentHashMap<>();
    return t -> seen.putIfAbsent(keyExtractor.apply(t), Boolean.TRUE) == null;
}


deviceRecords.stream().filter(distinctByKey(deviceRecord -> deviceRecord.getDeviceMac())).forEach(deviceRecord -> {
    System.out.println(deviceRecord.getDeviceMac());
});

你可能感兴趣的:(java)