zliczanie znaków w JAVA

0

Chcę napisać program, który będzie wczytywał ciąg znaków w jednej linii od użytkownika i wyświetli liczbę wystąpień każdego ze słów. Skorzystaj ze struktury słownikowej. Kolekcja powinna być posortowana po kluczach.
Czyli np.
Po wpisaniu: ala ma kota i ala ma psa i fajnie że wszystko ma
Program wyświetli to {ala=2, fajnie=1, i=2, kota=1, ma=3, psa=1, wszystko=1, że=1}

Na razie mam coś takiego:

import java.util.HashSet;
import java.util.Scanner;

public class zad3 {
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        HashSet<String> set = new HashSet<>();

        while (scanner.hasNext()) {
            for (String s : scanner.nextLine().split(" ")) {
                set.add(s);
            }
            System.out.print(set.size());
        }
    }
}
2

Set nie zliczy Ci wystąpień, jedynie sprawi, że elementy nie będą się powtarzać. Zrób sobie mapę i na niej zliczaj. Potem to już kwestia wyciągnięcia entries, posortowania i wypisania w podanym formacie.

0
"ala ma kota i ala ma psa i fajnie że wszystko ma".split(" ").groupBy(w => w).view.mapValues(_.size).toMap

val res2: scala.collection.immutable.Map[String,Int] =
  HashMap(że -> 1, fajnie -> 1, kota -> 1, ma -> 3, i -> 2, wszystko -> 1, ala -> 2, psa -> 1)

Przetlumacz sobie na Jave :)

1
        String input = "ala ma kota i ala ma psa i fajnie że wszystko ma";
        TreeMap<String, Long> result = Arrays.stream(input.split(" "))
                .collect(Collectors.groupingBy(
                        Function.identity(),
                        TreeMap::new,
                        Collectors.counting()
                ));
        System.out.println(result);
{ala=2, fajnie=1, i=2, kota=1, ma=3, psa=1, wszystko=1, że=1}

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