作者:achih | 来源:互联网 | 2022-12-01 14:46
我想收集流到LinkedHashMap
.
我有一个JSON
存储的资源LinkedHashMap resources
.然后我JSON
通过流式传输EntrySet
此地图来过滤掉元素.目前我正在收集流的元素到常规HashMap
.但在此之后我将其他元素添加到地图中.我希望这些元素处于插入的顺序中.
final List keys = Arrays.asList("status", "createdDate");
Map result = resources.entrySet()
.stream()
.filter(e -> keys.contains(e.getKey()))
.collect(Collectors.toMap(Map.Entry::getKey, Map.Entry::getValue));
result.put("date", "someDate");
return result;
这就是为什么我想收集流到一个LinkedHashMap
.我怎样才能做到这一点?
1> Amin..:
你可以这样做Stream
:
Map result = resources.entrySet()
.stream()
.filter(e -> keys.contains(e.getKey()))
.collect(Collectors.toMap(Map.Entry::getKey, Map.Entry::getValue, (x, y) -> y, LinkedHashMap::new));
该部分(x, y) -> y
是因为mergeFunction在找到重复键时,它返回找到的第二个键的值.第四部分是mapFactory,供应商提供一个新的空Map,结果将插入其中.