Gdy korzystamy z podwójnej pętli foreach, by dostać się do elementu w zbiorze, to korzystamy z mapy

Notatka związana z tym wpisem - pomysłem na wpis - brzmiała: "Jak zrobić mapę z podwójnej pętli".

    Gdy zacząłem szukać informacji na ten temat uzmysłowiłem sobie, że przecież nie muszę robić mapy z podwójnej pętli, bo fakt, że używam podwójnej (zagnieżdżonej) pętli świadczy, że korzystam z mapy.

    Kiedyś pewien doświadczony programista powiedział mi hasło podobne do tego co wyżej, ale dla mnie to było dziwne i nie zrozumiałe. Teraz gdy o tym myślę, to dziwne jest, że to może być dziwne.

    To chyba świadczy o tym, że rozwijam się intensywnie w programowaniu. Wyjaśnijmy tę kwestię

    Załóżmy, że mamy sytuację:


    String[][] container = new String[3][3];
    for (String[] list1 : container) {
        for (String list2 : list1) {
        }
    }
    

    No to przecież iterując po containerze w istocie rzeczy iterujemy po kluczach, a iterując po liście1 iterujemy po wartościach tego klucza. 

    No to od razu widać, że to mapa. 

No dobra,  ale ktoś zapyta, ale co z tego? Jaka to różnica? A no taka, że nie musimy iterować po wszystkim, żeby dostać się do określonego elementu, bo przecież mamy już gotowe funkcje, takie jak values(), keySet(), containValue - o którym napiszę wiecej za kilka miesięcy- itd.  które nam pozawalają na dostanie się do poszczególnych elementów dużo szybciej i prościej, a co najważniejsze złożoność obliczeniowa jest mniejsza na pewno niż iterowanie po zbiorze n do potęgi 2. 

    Także wniosek jest taki, że jak jest podwójna pętla to już jest mapa i nie trzeba nic robić, żeby nią była ;)


Komentarze

Popularne posty z tego bloga

IntelliJ: zmiana rozmiaru czcionki scrollem

ThunderBird: jak zrobić professional stopkę