Как конвертировать определенный алгоритм с потоками

Hex спросил: 14 ноября 2017 в 07:32 в: java

Задача состоит в том, чтобы вернуть String с суммой каждой буквы. Это также String.

Например,

input: dasamdw
output: s1d2a2m1w1

я разработал простой быстрый алгоритм:

private String method(String input) {
    Map<String, Integer> integerMap = new HashMap<>();
    for( char c : input.toCharArray()) {
        String key = String.valueOf(c);
        if(integerMap.containsKey(key)) {
            integerMap.put(key, integerMap.get(key) + 1);
        } else {
            integerMap.put(key, 1);
        }
    }    StringBuilder sb = new StringBuilder();
    for(Map.Entry<String, Integer> e : integerMap.entrySet()) {
        sb.append(e.getKey());
        sb.append(e.getValue());
    }
    return sb.toString();
}

Но я действительно хотел бы использовать для этого потоки, например:

private String method(String input) {
    Map<Character, Integer> collect =
        input.chars().
        mapToObj(i -> (char)i).collect(Collectors.groupingBy(Function.identity(), Collectors.counting() ));    return collect.entrySet()
                    .stream()
                    .map(entry -> entry.getKey() + "" + entry.getValue())
                    .collect(Collectors.joining(""));
}

Но я не могу понять правильный groupingBy part ...

0 ответов