Вопрос HashMap: Алгоритм, который я пытаюсь понять

Итак, у меня есть код, о котором я хочу узнать. Я продемонстрирую часть этого, так как я просто запутался в одном шаге к хэш-карте. Если я запускаю приведенный ниже код и ввожу строку, например ("ploploplp"), 'p' сопоставляется с 91, l сопоставляется с 61, а o сопоставляется с 31. Единственная пара значений ключа, которую я получаю, это o сопоставляется с 31. Разве p и l не должны сопоставляться с 32 и 33 соответственно в этом коде? Любой вклад очень поможет спасибо.

public static void printDuplicateCharacters(String word){
    char[] characters = word.toCharArray();

    Map<Character, Integer> charMap = new HashMap<Character, Integer>();
    for (Character ch: characters){
        if (charMap.containsKey(ch)){
            charMap.put(ch,  charMap.get(ch) + 30);
        } else{
            charMap.put(ch, 1);
        }
    }

1 + 30 + 30 + 30 = 91, а не 32.

azurefrog 15.05.2019 06:34

И я должен получить сопоставление с 61. 1 + 30 + 30

Rohan Ds 15.05.2019 06:36
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
В компьютерном программировании биты играют важнейшую роль в представлении и манипулировании данными на двоичном уровне. Побитовые операции...
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Приходилось ли вам сталкиваться с требованиями, в которых вас могли попросить поднять тревогу или выдать ошибку, когда метод Java занимает больше...
Полный курс Java для разработчиков веб-сайтов и приложений
Полный курс Java для разработчиков веб-сайтов и приложений
Получите сертификат Java Web и Application Developer, используя наш курс.
0
2
68
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

Ответ принят как подходящий
see "p" in your code,
1.first 'p' not contains , so call charMap.put(ch, 1); now in map 'p'->1 ,right?
2.second 'p' contains map , so call  charMap.put(ch,  charMap.get(ch) + 30); now in map 
'p'-> 31 , right?
3.third 'p' in map 'p'->61 , right?
4.fourth 'p' in map 'p'->91 , right?

ваш код работает, как показано ниже

первое вхождение добавит 1 и дальнейшее появление добавит к значению 30,

поэтому в случае «p»:

1 + 30 + 30 + 30 = 91

в случае «о»:

1 + 30 = 31

Надеюсь, поможет

Другие вопросы по теме