2017-02-09 4 views
-4

Я хочу, чтобы преобразовать Список Карта т.е.Java 8 Преобразование List <Map <String, String> к карте <String, Map <String, String >>

List<Map<String,String> 

на карте Карта т.е.

Map<String,Map<String,String>>; 

В списке карты Я хранящая Distanace между два Списком Cities.My карты является:

[{Destination = IOWA, расстояние = 2000, Source = NY}, {Destination = ОГАЙО, distance = 3000, Source = NY}, {Destination = TX, distance = 2500, Source = NY}, {Destination = NC, distance = 1500, Source = TX}, {Destination = NY, distance = 2500, Source = TX}, {Destination = DEL, расстояние = 3000, Source = TX}]

Теперь я должен преобразовать его в

MAP<String<Map<String,String>>, 

так что мы можем получить расстояние от всего города Космического Ключ карты будет Source City. Карта значений будет иметь город назначения в качестве ключа и расстояние между источником и назначением в качестве значения. Вывод будет в формате:

{TX = {NC = 1500, DEL = 3000, Нью-Йорк = 2500}, NY = {IOWA = 2000, TX = 2500, ОГАЙО = 3000}}

Я хочу преобразовать его с помощью Java 8 Stream API. Не знаете, как использовать группировку.

+0

Вы сделали это и попытались что-то сделать? – Fildor

+2

Почему бы не использовать надлежащие объекты? Списки карт всегда являются запахами кода. – Kayaman

ответ

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")))); 
+0

просто имейте в виду, что он выкинет IllegalStateException, если у вас есть дубликат datapoint –

+0

Я подтвердил ваш ответ. Мина также получает верхнюю часть, поэтому я ее не удалю. Существует ли «лучшая практика» для такого случая? – Fildor

+0

@Fildor Я считаю приемлемым (или, по крайней мере, принято) опубликовать расширенные комментарии в качестве ответа. Лично я не думал, что вы добавили много материала к оригинальному комментарию Кайамана. Но похоже, что я в меньшинстве. – shmosel

 Смежные вопросы

  • Нет связанных вопросов^_^