Как использовать Map.merge для увеличения счетчика в качестве значения? - PullRequest
0 голосов
/ 24 марта 2020

Я пытаюсь реорганизовать метод, который подсчитывает ключи в HashMap более эффективным способом, реализуя Map.merge (). Как мне добиться этого по следующему коду:

 public Map<Character, Integer> countCharacterUsage(String input) {
    Map<Character, Integer> characterToCountUsage = new WeakHashMap<>();
    for (char symbol : input.toCharArray()) {
        if (characterToCountUsage.containsKey(symbol)) {
            int symbolsCount = characterToCountUsage.get(symbol);
            characterToCountUsage.put(symbol, ++symbolsCount);
        } else {
            characterToCountUsage.put(symbol, 1);
        }
    }

    return characterToCountUsage;
}

1 Ответ

1 голос
/ 24 марта 2020

Вы можете использовать вычислить

characterToCountUsage.compute(symbol, (k,v)-> v==null ? 1 : v+1);

Также с объединить

characterToCountUsage.merge(symbol,1, (k,v)-> v+1);
...