mem*_*und 9 java java-8 java-stream
我正在创建一个HashMap使用java8 streamAPI,如下所示:
Map<Integer, String> map = dao.findAll().stream()
.collect(Collectors.toMap(Entity::getType, Entity::getValue));
Run Code Online (Sandbox Code Playgroud)
现在,如果将一个元素添加到已存在该键的集合中,我只想将现有元素保留在列表中并跳过
附加元素.我怎样才能做到这一点?可能是我要利用BinaryOperation<U>的toMap(),但任何人都可以提供
我的具体案例的一个例子?
是的,你需要它BinaryOperation<U>并将其用作第三个参数Collectors.toMap().
如果发生冲突(已经存在的密钥的出现),您可以在值oldValue(现有密钥)和newValue.在代码示例中,我们始终采用值oldValue.但是你可以自由地用这两个值做任何事情(拿大一个,合并两个等).
以下示例显示了一种可能的解决方案,其中现有值始终保留在地图中:
Map<Integer, String> map = dao.findAll().stream()
.collect(Collectors.toMap(Entity::getType, Entity::getValue, (oldValue, newValue) -> oldValue));
Run Code Online (Sandbox Code Playgroud)
有关其他示例,请参阅文档.
| 归档时间: |
|
| 查看次数: |
1212 次 |
| 最近记录: |