我想收集流到 LinkedHashMap<String, Object>
.
我有一个 JSON
存储在 LinkedHashMap<String, Object> resources
中的资源.
然后我过滤掉JSON
通过流式传输元素 EntrySet
这张 map 的。
目前我正在将流的元素收集到常规 HashMap
.但在此之后,我将向 map 添加其他元素。我希望这些元素按插入顺序排列。
final List<String> keys = Arrays.asList("status", "createdDate");
Map<String, Object> 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<String, Object>
.我怎样才能做到这一点?
最佳答案
您可以使用 Stream
执行此操作:
Map<String, Object> 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 ,结果将插入其中。
关于java - 将 EntrySet 的流收集到 LinkedHashMap,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52975256/