我想转换地图列表,即
List<Map<String,String>
到地图的地图,即
Map<String,Map<String,String>>;
在地图列表中我将Distanace存储在两个城市之间。我的地图列表是:
[{Destination = IOWA,distance = 2000,Source = NY},{Destination = OHIO, distance = 3000,Source = NY},{Destination = TX,distance = 2500,Source = NY}, {目的地= NC,距离= 1500,来源= TX},{目的地=纽约, 距离= 2500,来源= TX},{目的地= DEL,距离= 3000, 源= TX}]
现在我必须将其转换为
MAP<String<Map<String,String>>,
这样我们就可以远离所有城市.Outer Map Key将成为Source City。值映射将具有目标城市作为键和源到目标之间的距离作为值。输出格式为:
{TX = {NC = 1500,DEL = 3000,NY = 2500},NY = {IOWA = 2000,TX = 2500,OHIO = 3000}}
我想通过使用Java 8 Stream API进行转换。不知道如何使用groupingby。
答案 0 :(得分:5)
正如其他人所指出的那样,您并未使用理想的数据结构。但在这种情况下,这应该做你想做的事情:
Map<String, Map<String, String>> distancesBySource = distances.stream()
.collect(Collectors.groupingBy(m -> m.get("Source"),
Collectors.toMap(m -> m.get("Destination"), m -> m.get("distance"))));