Jak w Stringu policzyć ile razy występuje w nim każde słowo?

0

Witam,
W zamyśle program ma policzyć ile razy w zmiennej string wystąpiło każde słowo. Ze string wkladamy do tablicy słowa, które były oddzielone wcześniej spacją. Dla przykkadu:
Tablica zawiera {"ola","kasia","ola","ola","kot","kot","pies"}

Program powinien zwrócić wynik
Ola 3 razy
Kot 2 razy
Kasia 1 raz
Pies 1 raz

Po licznych nieudanych próbach z zagnieżdżonymi pętlami się poddałem. Gdyby chodziło o znalezienie konkretnego słowa zadanie byłoby o wiele prostsze ale niestety nie jest.

0

Daję wędkę

http://rextester.com/LFM57222

import java.util.*;
import java.lang.*;

class Rextester
{  
    public static void main(String args[])
    {
        String[] items = {"ola","kasia","ola","ola","kot","kot","pies"};
        HashMap<String, Integer> m = new HashMap<>();
        for(String item: items) {
            m.put(item, m.getOrDefault(item, 0) + 1);
        }        
        System.out.println(m);
    }
}
1

może Eclipse zawinił? podobny problem http://stackoverflow.com/questions/8599348/hashmap-method-put-is-undefined-for-the-type-hashmap

Inne podejście

            ...
            //m.put(item, m.getOrDefault(item, 0) + 1);
            int count = m.containsKey(item) ? m.get(item) : 0;
            m.put(item, count + 1);
            ...
5
        String[] items = {"ola","kasia","ola","ola","kot","kot","pies"};
        Map<String, Long> counted = Arrays.stream(items)
                .collect(Collectors.groupingBy(
                        Function.identity(),
                        Collectors.counting()
                ));
        System.out.println(counted);
0

Z pierwszego postu można wnioskować, że autor chce wypisać wyniki w określonej kolejności - malejąco względem ilości wystąpień słowa.

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