1. 集合转map时,对重复key进行处理(保留第一个出现的对象)
//生成映射值:Function.identity() 表示映射的值就是流中的对象本身。
//处理重复键:(p1, p2) -> p1 表示如果存在重复的键,保留第一个出现的对象。
List<MonProjectBudget> collect = new ArrayList<>(monProjectBudgets.stream().collect(Collectors.toMap(
p -> p.getItemName() + "-" + p.getProjectNo() + "-" + p.getOwnCode(),
Function.identity(),
(p1, p2) -> p1
)).values());
2.使用findFirst()和Optional中的orElse()获取第一条数据
//获取第一条数据,若为空,返回一个空对象
monProjectBudgets.stream().filter(p -> StringUtils.isNotEmpty(p.getItemName())).findFirst().orElse(new MonProjectBudget());