特有のキー以外のマップのリストがあり、ストリーミングAPIで各マップ値を変更したいのですが。結果は新しいリストでなければならず、元のものは変更されないままでなければなりません。ストリーミングAPIを使用したマップリストの値を換算する
例データ:
// [ {jpg=firstImage.jpg, png=firstImage.png}, {jpg=secondImage.jpg, png=secondImage.png} ]
Map<String, String> map1 = new HashMap<>();
map1.put("jpg", "firstImage.jpg");
map1.put("png", "firstImage.png");
Map<String, String> map2 = new HashMap<>();
map2.put("jpg", "secondImage.jpg");
map2.put("png", "secondImage.png");
List<Map<String, String>> list = new ArrayList<>();
list.add(map1);
list.add(map2);
のは、私が大文字にファイル名を変換したいと仮定しましょう。私は次の操作を行うことができ、独特の値を持つ:
Map<String, String> copy = list.stream()
.flatMap(e -> e.entrySet().stream())
.collect(Collectors.toMap(Map.Entry::getKey, e -> e.getValue().toUpperCase()));
しかしキーが独特でないときflatMapは動作しません、それは私のList<Map<String, String>>
構造を破壊するであろう。私は構造が悪いことを知っていますが、私はそれを変更することはできません。
期待される成果は:
// [ {jpg=FIRSTIMAGE.JPG, png=FIRSTIMAGE.PNG}, {jpg=SECONDIMAGE.JPG, png=SECONDIMAGE.PNG} ]
私は、ストリーミングAPIでこれを達成し、可能な場合は、ネストされたループを避けるためにしたいと思います。
ネストされたストリームはありませんでした。ありがとう! – moeTi