Java 如何创建流覆盖重复项的HashMap?

Java 如何创建流覆盖重复项的HashMap?,java,java-8,java-stream,Java,Java 8,Java Stream,我正在使用java8streamAPI创建一个HashMap,如下所示: Map<Integer, String> map = dao.findAll().stream() .collect(Collectors.toMap(Entity::getType, Entity::getValue)); Map Map=dao.findAll().stream() .collect(Collectors.toMap(Entity::getType,Entity::getValue

我正在使用java8
stream
API创建一个
HashMap
,如下所示:

Map<Integer, String> map = dao.findAll().stream()
    .collect(Collectors.toMap(Entity::getType, Entity::getValue));
Map Map=dao.findAll().stream()
.collect(Collectors.toMap(Entity::getType,Entity::getValue));
现在,如果将一个元素添加到已存在键的集合中,我只想将现有元素保留在列表中并跳过

附加元素。我怎样才能做到这一点?可能我必须使用
toMap()
BinaryOperation
,但是有人能提供吗


我的特定案例的一个示例?

是的,您需要该
二进制操作
,并将其用作
收集器.toMap()
的第三个参数

如果出现冲突(已存在键的外观),您可以在值
oldValue
(现有键)和
newValue
之间进行选择。在代码示例中,我们总是使用value
oldValue
。但是,您可以自由地使用这两个值执行任何其他操作(取较大的值,合并这两个值等)

以下示例显示了一种可能的解决方案,其中现有值始终保留在映射中:

Map<Integer, String> map = dao.findAll().stream()
     .collect(Collectors.toMap(Entity::getType, Entity::getValue, (oldValue, newValue) -> oldValue));
Map Map=dao.findAll().stream()
.collect(Collectors.toMap(Entity::getType,Entity::getValue,(oldValue,newValue)->oldValue));

有关另一个示例,请参见。

您是否查看了文档?因为他们提供了一个例子: