Java 如何创建流覆盖重复项的HashMap?
我正在使用java8Java 如何创建流覆盖重复项的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
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
之间进行选择。在代码示例中,我们总是使用valueoldValue
。但是,您可以自由地使用这两个值执行任何其他操作(取较大的值,合并这两个值等)
以下示例显示了一种可能的解决方案,其中现有值始终保留在映射中:
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));
有关另一个示例,请参见。您是否查看了文档?因为他们提供了一个例子: