gpt4 book ai didi

java - 处理 Collectors.toMap() 函数中的重复键

转载 作者:搜寻专家 更新时间:2023-10-31 08:16:21 24 4
gpt4 key购买 nike

我正在创建一个映射,它的 (key,value) 将是我的 Person 对象中的 (name, address):

Map<String, String> myMap = persons.stream.collect(Collector.toMap(person.getName(), person.getAddress(), (address1, address2) -> address1));

在重复键的情况下,我想跳过将第二个地址添加到 map 并且还想记录名称。跳过我已经可以使用 mergeFunction 做的重复地址,但是为了在这个 mergeFunction 中记录我需要的名字,person 对象,比如:

(address1, address2) -> {
System.out.println("duplicate "+person.name() + " is found!");
return address1;
}

我将 person 对象传递给此合并函数时遇到困难。

最佳答案

我相信 forEach 方法和 Map.merge会更简单,更适合当前用例:

Map<String, String> myMap = new HashMap<>();
persons.forEach(person -> myMap.merge(person.getName(), person.getAddress(), (adrs1, adrs2) -> {
System.out.println("duplicate " + person.getName() + " is found!");
return adrs1;
}));

注意:Map.merge 还使用BiFunction(toMap 中使用的BinaryOperator 的父级) ),因此您可以轻松地将此处的合并功能与您现有的所需功能相关联。

关于java - 处理 Collectors.toMap() 函数中的重复键,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54131743/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com