エクストラ:
私はへのストリームを収集したいですLinkedHashMap<String, Object>
。
私が持っているJSON
に格納されているリソースをLinkedHashMap<String, Object> resources
。それから私はフィルタリングJSON
ストリーミング要素EntrySet
このマップのを。現在、私は定期的にストリームの要素を集めていますHashMap
。しかし、この後、私はマップに他の要素を追加しています。私は、これらの要素が挿入された順番になりたいです。
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サプライヤーが結果が挿入される新しい空のマップを提供します。