Pomóc w zrozumieniu kodu

0

Hej,

Znalazłem na internecie metodę która przy użyciu HashMaps pomaga mi znaleźć ile razy dany item pojawił się w array. Nie do końca rozumiem parę rzeczy i czy ktoś mógłby mi wytłumaczyć jak to działa. Dodałem komentarze przy kodzie.
Dzięki za pomoc : )

        HashMap<String, Integer> countMap = new HashMap<String, Integer>();
        for (String string : strArray) {     // dlaczego tutaj użyte zostało for i czy ktoś mógłby wytłumaczyć tą linijke ? 
            if (!countMap.containsKey(string)) {
                countMap.put(string, 1);
            } else {
                Integer count = countMap.get(string);
                count = count + 1;
                countMap.put(string, count);
            }
        }
        printCount(countMap);
    }

    
    private static void printCount(HashMap<String, Integer> countMap) {
        Set<String> keySet = countMap.keySet();   // nie mam pojęcia co robi ta linijka 
        for (String string : keySet) {  // ta tez nie wiem co robi 
            System.out.println(string + " : " + countMap.get(string));
        }
    }
}
0

To się nazywa zliczanie. Analogiczny mechanizm stosuje się w sortowaniu przez zliczanie / countingsort
W mapie przechowujesz sobie liczbę wystąpień danego elementu.
Przechodzisz po wszystkich elementach swojej wejściowej tablicy for (String string : strArray) i dla każdego z nich wyciągasz z mapy aktualną liczbę zliczeń, dodajesz do niej 1 i wkładasz znów do mapy.
keySet zwraca ci listę kluczy w mapie, czyli u ciebie liczbę "unikalnych" wartości z tablicy.

3

Jesteś zielonym ludzikiem który dopiero co wysiadł z latającego spodka. Podziwiasz piękne okoliczności ziemskiej przyrody.

Spotykasz Krowa.
Spotkałeś wcześniej Krowa?
Nie, więc dodajesz do dziennika Krowa i przypisujesz krowie 1, bo widzisz ją pierwszy raz.

Spotykasz Byk.
Spotkałeś wcześniej Byk?
Nie, więc dodajesz do dziennika Byk i przypisujesz bykowi 1, bo widzisz go pierwszy raz.

Spotykasz Krowa.
Spotkałeś wcześniej Krowa?
Tak, więc nie dodajesz do dziennika Krowa bo już ją znasz, ale przypisujesz krowie 2, bo widzisz ją drugi raz.

Spotykasz Krowa.
Spotkałeś wcześniej Krowa?
Tak, więc nie dodajesz do dziennika Krowa bo już ją znasz, ale przypisujesz krowie 3, bo widzisz ją trzeci raz.

Masz już byka i stado krów.

Spotykasz Koń.
Spotkałeś wcześniej Koń?
Nie, więc dodajesz do dziennika Koń i przypisujesz koniowi 1, bo widzisz go pierwszy raz.

Masz w dzienniku misji podliczone, że spotkałeś konia, byka i stado trzech krów.

1

Nie jestem javovcem....
Ale ad 1 i 3 : robisz iterację po każdym elemencie tablicy.
Ad 2 metoda keySet() zwraca klucze tablicy.

1 użytkowników online, w tym zalogowanych: 0, gości: 1