所以我有一些我想学习的代码。我将演示它的一部分,因为我只是对哈希图迈出了一步而感到困惑。如果我运行下面的代码,并输入诸如(“ ploploplp”)的字符串,则'p'映射为91,l映射为61,o映射为31。我得到的唯一键值对是映射到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);
}
}
答案 0 :(得分:0)
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 :(得分:0)
您的代码如下所示
第一次出现将加1 然后再出现会为该值加上30,
所以在'p'的情况下:
1 + 30 + 30 + 30 = 91
如果是'o':
1 + 30 = 31
希望有帮助