LinkedHashMapへのentrySetの収集流れ

エクストラ:

私はへのストリームを収集したいです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サプライヤーが結果が挿入される新しい空のマップを提供します。

おすすめ

転載: http://43.154.161.224:23101/article/api/json?id=182705&siteId=1