当前位置: 首页 > 面试题库 >

Java 使用流生成地图时忽略重复项

岳晟
2023-03-14
问题内容
Map<String, String> phoneBook=people.stream()
                                    .collect(toMap(Person::getName, Person::getAddress));

当重复发生时,我得到重复键异常。

发生重复时,是否可以忽略添加要映射的值?

当有重复项时,只需忽略该重复项即可继续。


问题答案:

使用以下mergeFunction参数可以实现Collectors.toMap(keyMapper, valueMapper, mergeFunction):

Map<String, String> phoneBook = 
    people.stream()
          .collect(Collectors.toMap(
             Person::getName,
             Person::getAddress,
             (address1, address2) -> {
                 System.out.println("duplicate key found!");
                 return address1;
             }
          ));

mergeFunction是对与同一个键关联的两个值进行运算的函数。adress1对应于收集元素时遇到的第一个地址,也adress2对应于遇到的第二个地址:此lambda只是告知保留第一个地址,而忽略第二个地址。



 类似资料:
  • 本文向大家介绍system.reactive 忽略重复值,包括了system.reactive 忽略重复值的使用技巧和注意事项,需要的朋友参考一下 示例 有两个用于过滤重复项的运算符: 您还可以传递谓词:            

  • 在Spring MVC中,我需要将空字符串()视为。这是因为我发现,当我编辑一个表单字段(带有Angular的ng-model),该字段最初是,然后将其擦除为空白时,Angular将以空字符串的形式发送该bean属性。如果我不接触这样的null值,它将不会在JSON有效负载中发送,因此被视为null。

  • 它正在返回,“能量是8.987551787368176E16焦耳”,而它应该返回,“能量是89875517873681760.0焦耳”

  • 问题内容: 这个问题已经在这里有了答案 : “ INSERT IGNORE”与“ INSERT…ON DUPLICATE KEY UPDATE” (11个答案) 6年前关闭。 我正在尝试完成此查询;我的标签字段设置为UNIQUE,我只是希望数据库忽略任何重复的标签。 甚至可以接受 问题答案: 建议不要使用INSERT IGNORE,因为它会忽略所有错误(即,草率的全局忽略)。相反,由于在您的示例中

  • 有没有一种方法可以忽略使用mapstruct在此代码示例中第三种方法的映射器的生成?

  • 问题内容: 当将insert_many与pymongo一起使用时,我需要忽略重复的插入,其中重复是基于索引的。我已经看到有关stackoverflow的问题,但是我没有看到有用的答案。 这是我的代码段: 我希望insert_many忽略重复项而不抛出异常(这会填满我的错误日志)。另外,是否可以使用一个单独的异常处理程序,这样我就可以忽略这些错误。我想念“ w = 0” … 谢谢 问题答案: 您可以