Итак, у меня есть код, о котором я хочу узнать. Я продемонстрирую часть этого, так как я просто запутался в одном шаге к хэш-карте. Если я запускаю приведенный ниже код и ввожу строку, например ("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);
}
}
И я должен получить сопоставление с 61. 1 + 30 + 30




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
Надеюсь, поможет
1 + 30 + 30 + 30 = 91, а не 32.