stream流map 多个字段_stream流根据对象指定字段去重
先封裝一個去重的方法
import java.util.Map;
import java.util.concurrent.ConcurrentHashMap;
import java.util.function.Function;
import java.util.function.Predicate;
/**
* 程熙cjp:https://blog.csdn.net/weixin_41133233
* 去重工具類
*
* @author chengxi
* @date 2020/3/17 17:15
*/
public class DeduplicationUtil {
/**
* 自定義函數去重
*
* @param keyExtractor
* @param
* @return
*/
public static Predicate distinctByKey(Function super T, ?> keyExtractor) {
Map seen = new ConcurrentHashMap<>();
return t -> seen.putIfAbsent(keyExtractor.apply(t), Boolean.TRUE) == null;
}
}
案例:
// 注意需要關流之后,才會完成去重,如果繼續操作流可能拿到未去重的數據
List logEchoVOList = traceLogEchoVOList.stream()
.filter(DeduplicationUtil.distinctByKey(d -> d.getVisitorNo()))
.collect(Collectors.toList());
總結
以上是生活随笔為你收集整理的stream流map 多个字段_stream流根据对象指定字段去重的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 班开头成语有哪些?
- 下一篇: 上海欢乐谷能带食物吗