HashMap问题:我正在尝试找出的算法

时间:2019-05-15 04:33:10

标签: java algorithm

所以我有一些我想学习的代码。我将演示它的一部分,因为我只是对哈希图迈出了一步而感到困惑。如果我运行下面的代码,并输入诸如(“ 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);
        }
    }

2 个答案:

答案 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

希望有帮助