我需要使用Java 8将<String, List<String>>
Map为Map<String,String>
,并假设值是唯一的。例如,
输入Map-
{"Fruit" -> ["apple","orange"], "Animal" -> ["Dog","Cat"]}
字符串
输出Map
{"apple" -> "Fruit", "orange" -> "Fruit", "Dog"->"Animal", "Cat" -> "Animal"}
Map <String, String> outputMap = new HashMap<>();
for (Map.Entry<String, List<String>> entry : inputMap.entrySet()) {
entry.getValue().forEach(value -> outputMap.put(value, entry.getKey()));
}
这是正确的吗?我们可以使用流Java 8实现这一点吗?
3条答案
按热度按时间odopli941#
这样做:
字符串
阅读Stream.collect(Supplier supplier,BiConsumer,BiConsumer combiner)了解更多信息。
vxbzzdmp2#
你可以试试这样
字符串
sd2nnvve3#
字符串
分步分解
1.将Map转换为条目流。
1.将每个条目拆分为值列表中每个项目的单独项目。
1.将条目转换为新的Map,其中键等于先前的值,值等于先前的键。