去重方法
/**
* 根据条件去重
*
* @param keyExtractor
* @param <T>
* @return
*/
public static <T> Predicate<T> distinctByKey(Function<? super T, Object> keyExtractor) {
Map<Object, Boolean> map = new ConcurrentHashMap<>();
return t -> map.putIfAbsent(keyExtractor.apply(t), Boolean.TRUE) == null;
}
//分组
Map<String, List<TestDto>> channelName =
channelList.stream().collect(Collectors.groupingBy(TestDto::getChannelName));
//循环
for (Map.Entry<String, List<TestDto>> channelNameEntery : channelName.entrySet()) {
vbDataAnalysis.setChannelName(channelNameEntery.getKey());
List<TestDto> pv = channelNameEntery.getValue();
//去重
List<TestDto> UvList =
channelNameEntery.getValue().stream()
.filter(distinctByKey(VbDataRecord::getUserIp))
.collect(Collectors.toList());
}
}