Maps Java Streams
Малко помощ, ако може:
Как да принтирам Value-Стойността на вложената Карта , по долу е кода.
import java.io.BufferedReader; import java.io.IOException; import java.util.LinkedHashMap; public class Main { public static void main(String[] args) throws IOException { LinkedHashMap<String, LinkedHashMap<String, Integer>> map = new LinkedHashMap<>(); LinkedHashMap<String, Integer> nestedMap = new LinkedHashMap<>(); String country = "Bulgaria"; String city = "Sofia"; int population = 1000000; nestedMap.put(city, population); map.put(country, nestedMap); map.entrySet().stream().forEach(entry -> { System.out.printf("%s (total population: %d)%n", entry.getKey(), // TO DO Finish here); }); } }
Мерси а има ли нещо по кратко
Ами по начина, по който си започнал задачата влагаш нов HashMap като стойност и няма как без да итерираш през неговите стойности. Това пак можеш да го направиш със stream.
Не знам задачата точно каква е, но предполагам, че ако имаш още градове, ще трябва да добавиш логика за сумиране на популацията им в променлива и да принтираш резулата след вътрешния стрийм.
Да мерси, просто гледам една задача от Maps, на която имам решението, но не видях, че те запазват данните по различен начин в картите и почнах да се чудя как така го вади това Value :)
Тъй като едно е да препиша задачата друго е да я разбера.
Аз затова се опитах да ти покажа с коментарите от къде до какво имаш достъп. Предполагам знаеш, че речниците (HashMap) пазят двойки ключ-стойност. Със stream-а можеш да итерираш през тези key-value pairs с forEach(), като така достъпваш entries (разбирай двойките). Когато value-то ти е някаква друга колекция, можеш да итерираш и нея, ако това е което целиш. Всичко придобива смисъл след като сложиш един брейкпойнт и дебъгнеш за да проследиш с какво разполагаш.