gpt4 book ai didi

java - 如何使用流在 java 中生成列表的映射 (Map>>)

转载 作者:行者123 更新时间:2023-12-01 17:17:47 25 4
gpt4 key购买 nike

给定:

enum Food{
FRUITS, VEGGIES;
}

Map<String, List<String>> basketMap = new HashMap<>();
basketMap .put("bucket1", Arrays.asList("apple", "banana"));
basketMap .put("bucket2", Arrays.asList("orange", "kiwi"));
basketMap .put("bucket3", Arrays.asList("banana", "orange"));

需要生成一个map of list的Map(populte FruitBaskerMap)

Map<String, Map<Food, List<String>> fruitBasketMap = new HashMap<>();

最终输出:

fruitBasketMap:
[
bucket1, [Food.FRUITS, {"apple", "banana"}],
bucket2, [Food.FRUITS, {"orange", "kiwi"}],
bucket3, [Food.FRUITS, {"banana", "orange"}]
]

我尝试了以下方法(但没有成功)

fruitBasketMap = basketMap.entrySet().stream().collect(
Collectors.toMap(Map.Entry::getKey,
Collectors.toMap(Food.FRUITS,
Collectors.toList(Map.Entry::getValue())
)
)
);

有人可以告诉我该怎么做吗?

最佳答案

这个实现似乎有效(使用 Java 9 Map.of):

Map<String, Map<Food, List<String>>> fruitBasketMap = basketMap.entrySet().stream()
.map(e -> Map.entry(e.getKey(), Map.of(Food.FRUITS, e.getValue())))
.collect(Collectors.toMap(Map.Entry::getKey, Map.Entry::getValue));

测试输出:

{
bucket2={FRUITS=[orange, kiwi]},
bucket3={FRUITS=[banana, orange]},
bucket1={FRUITS=[apple, banana]}
}

关于java - 如何使用流在 java 中生成列表的映射 (Map<String, Map<Enum, List<String>>>),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61350675/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com