Zliczanie znaków z pliku

0

Witam. Głowię się nad zadaniem. Program ma wczytać plik tekstowy, powiedzmy, że jego zawartość wygląda tak:

aa
a
b
4
- -

I program ma wypisać, że a wystąpiło 3 razy, b 1 raz, 4 1 raz, - 2 razy.
Dodatkowo ma być zrobione to na hashmapie, ale póki co myślę jak w ogóle taką funkcję zrobić, która sama pobierze znaki i zsumuje ich ilość. Jest ktoś w stanie mnie naprowadzić? :)

dodanie znacznika <code class="none"> - @furious programming

0

Inkrementuj w mapie wartość każdego wystąpienia i voila.

0

czyli coś na zasadzie, czyta literę np. trafił na 'a' , jeśli nie ma jej w mapie to tworzy klucz i ustawia na a, 1
jeśli potem znajdzie znowu a, to po prostu ustawia na a, 2
i tak dalej a na końcu wypisuje tak?

0

Ano. Całość w porywach do 6 linii kodu.

1
Map<Character, Long> wordcount = Files.lines(Paths.get("tekst.txt"))
        .flatMap(line -> line.chars()
                        .mapToObj(x -> (char) x)
        )
        .collect(Collectors.groupingBy(
                letter -> letter,
                Collectors.counting()
        ));
System.out.println(wordcount);

Można też tak:

Map<String, Long> wordcount2 = Files.lines(Paths.get("tekst.txt"))
        .flatMap(line -> Arrays.stream(line.split("")))
        .collect(Collectors.groupingBy(
                letter -> letter,
                Collectors.counting()
        ));
System.out.println(wordcount2);

Trochę brzydziej bo mamy mapę Stringów które zawsze są 1 znakiem, niemniej kod jest ładniejszy bo nie trzeba sie bawić w kombinacje ze strumieniem charów ;]

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