• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

Map i Set w języku Java- wypisywanie na ekran

0 głosów
536 wizyt
pytanie zadane 3 maja 2020 w Java przez marzena12345 Użytkownik (770 p.)

Witam, stworzyłam to co poniżej i docelowo chciałabym aby wypisywało mi w ten sposób:

Europa
          Polska
                    Warszawa
                     Kraków
          Hiszpania
                      Barcelona
                      Madryt

Jak to najprościej zrobić ?

Mi wychodzi tylko oddzielić Europę, a resztę mam w jednej linii 

 

        Set<String> cities=new HashSet<>();
        Map<String, Set<String>> citiesForCountry=new HashMap<>();
        Map<String, Map<String, Set<String>>> countriesForContinent=new HashMap<>();
        cities.add("Warszawa");
        cities.add("Kraków");
        citiesForCountry.put("Polska", cities);
        cities=new HashSet<>();
        cities.add("Barcelona");
        cities.add("Madryt");
        citiesForCountry.put("Hiszpania", cities);
        countriesForContinent.put("Europa", citiesForCountry);

       
        String space= "    ";
        System.out.println(countriesForContinent.keySet());
        System.out.println(space+ countriesForContinent.values());

 

komentarz 3 maja 2020 przez Fortitudo Nowicjusz (160 p.)

Może w trakcie tworzenia nazw miast, państw i kontynentów dodawaj do danego Stringa odstępy. Stwórz sobie stałą np;

final String SPACE="   "
final String DOUBLE_SPACE="      "

i wtedy np:

cities.add(DOUBLE_SPACE+"Warszwa")

 

komentarz 3 maja 2020 przez mbabane Szeryf (79,260 p.)
edycja 3 maja 2020 przez mbabane
Lepiej nie mieszać warstwy prezentacji z warstwą danych (jak wtedy np. wyszukiwać dane, trzeba by robić jakieś haki na to). Same spacje najlepiej dodawać tylko w momencie kiedy mają zostać wyświetlone dane. Trzeba po prostu wymyślić/znaleźć jakiś sprytny algorytm.
komentarz 3 maja 2020 przez Fortitudo Nowicjusz (160 p.)
Słuszna uwaga -dziękuje

1 odpowiedź

0 głosów
odpowiedź 3 maja 2020 przez mbabane Szeryf (79,260 p.)

Na przykład tutaj:

System.out.println(countriesForContinent.keySet());

Nie wyświetlaj wszystkich kluczy na raz bo to sprawia, że masz wszystkie dane w jednej linii. Musisz jechać po kolei pętlą for (lub metoda forEach i lambdą). Zapoznaj się jak iterować po mapie, setcie (chyba że wiesz to sprawa prosta) i to rozwiąże Twój problem. Z tego co rozumiem z kodu, to musisz zacząć iterować od mapy countriesForContinent i "schodzić" co raz bardziej w jej głąb (Kontynent->Państwo->Miasto).

Podobne pytania

0 głosów
1 odpowiedź 286 wizyt
pytanie zadane 31 grudnia 2018 w Java przez Piotr Kusnierkiewicz Użytkownik (670 p.)
0 głosów
1 odpowiedź 252 wizyt
pytanie zadane 26 czerwca 2019 w Java przez SztyJkmajster Z Pols Nowicjusz (240 p.)
0 głosów
2 odpowiedzi 201 wizyt
pytanie zadane 24 grudnia 2015 w HTML i CSS przez Paweł123 Nałogowiec (33,540 p.)

93,426 zapytań

142,421 odpowiedzi

322,647 komentarzy

62,787 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj

VMware Cloud PRO - przenieś swoją infrastrukturę IT do chmury
...