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

Java HashMap, wystąpienia wyrazów

Aruba Cloud - Virtual Private Server VPS
+1 głos
318 wizyt
pytanie zadane 23 kwietnia 2022 w Java przez Czang Kai Shrek Obywatel (1,990 p.)
edycja 23 kwietnia 2022 przez Czang Kai Shrek

Witam, mam problem ze zrozumieniem HashSet i HashMap. O ile w HashSet sprawa jest prostasza, jedna zmienna string, funkcja leci przez cały plik txt i zlicza wyrazy:
 

for (String wyraz : listaWyrazow) {                                                                     //ile wyrazow w pliku
            System.out.println(++ile + " " + wyraz);
        }
        
        HashSet<String> zbiorWyrazow = new HashSet<>();                                                          //ile wyrazow roznych
        for (String wyraz : listaWyrazow) {
            zbiorWyrazow.add(wyraz);
        }

        ile = 0;
        
        for (String wyraz : zbiorWyrazow) {
            System.out.println(++ile+" "+wyraz);
        }

Tak do końca nie pojmuję HashMap. Chcę by zliczał wystąpienia danego słowa, dodajemy integera, ale nie rozumiem jak dodać to wystąpienie:
 

HashMap<String,Integer> slownikWyrazow = new HashMap<>();
for (String wyraz : listaWyrazow) {
    
    if (HashMap.containsKey(wyraz))
        HashMap.put(wyraz, HashMap.get(wyraz) + 1);

    else
        HashMap.put(wyraz, 1);
}

Da się to właściwie zrobić przez Hashmap? Z neta wynika, że tak niby najlepiej.

1 odpowiedź

+1 głos
odpowiedź 23 kwietnia 2022 przez Wiciorny Ekspert (280,450 p.)
wybrane 25 kwietnia 2022 przez Czang Kai Shrek
 
Najlepsza

Nie bardzo Cię rozumiem: mapa a zbiór to całkiem dwie inne kolekcje. Zbiór po prostu przechowuje elementy bez powtórzeń, duplikatów, mapa to kolekcja której każdy element, ma przypisany specjalny identyfikator- klucz, jest to unikalny klucz który również nie może się powtórzyć i stanowi jakby ' identyfikator ropoznawania tego obiektu w kolekcji "

Możesz to zrobić na wiele sposobów nie bardzo rozumiem o co chodzi, ale możesz zliczyć elementy w ten sposób, że zapiszesz KLUCZ jako to własnie słowo a jego wartość, to ilość wystąpień. 

 

  Map<String, Long> zliczWyrazyMap= listaWyrazow.stream()
            .collect(Collectors.groupingBy(Function.identity(), Collectors.counting()));

        System.out.println(zliczWyrazyMap);
    }
// wynik:  {Wyraz1 = 2, WyrazInny = 4 }

dla przykładu masz tutaj Wyraz1 i WyrazInny które występuja 2 i 4 razy to moga byc dowolne stringi  // itd tutaj mamy 2 wyrazy i ich ilosci
 

Podobne pytania

+1 głos
1 odpowiedź 204 wizyt
pytanie zadane 29 stycznia 2022 w Java przez Bakkit Dyskutant (7,600 p.)
0 głosów
2 odpowiedzi 305 wizyt
pytanie zadane 20 grudnia 2018 w Java przez Piotr Kusnierkiewicz Użytkownik (670 p.)
0 głosów
1 odpowiedź 203 wizyt
pytanie zadane 17 grudnia 2018 w Java przez Piotr Kusnierkiewicz Użytkownik (670 p.)

93,329 zapytań

142,323 odpowiedzi

322,400 komentarzy

62,662 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

Wprowadzenie do ITsec, tom 1 Wprowadzenie do ITsec, tom 2

Można już zamawiać dwa tomy książek o ITsec pt. "Wprowadzenie do bezpieczeństwa IT" - mamy dla Was kod: pasja (użyjcie go w koszyku), dzięki któremu uzyskamy aż 15% zniżki! Dziękujemy ekipie Sekuraka za fajny rabat dla naszej Społeczności!

...