簡體   English   中英

HashMap.get() 在一個片段中有效,在另一個片段中無效,為什么?

[英]HashMap.get() works in one snippet and does not work on another one why?

我有一個 hashmap 如下所示,

static Map<String, Integer> map = new HashMap<String, Integer>() {
    {
    put("**", 15); //11 to 19 and 21 to 26
    put("*0", 2); // 1 and 2
    put("*1", 2);
    put("*2", 2);
    put("*3", 2);
    put("*4", 2);
    put("*5", 2);
    put("*6", 2);   
    put("*7", 1);  //1
    put("*8", 1); 
    put("*9", 1); 
    put("1*", 9); //1 to 9
    put("2*", 6); //1 to 6    
}};

我正在嘗試從 map 上方獲取與“2 *”對應的值,例如,

方法一

String string = "2*";
char[] ch = string.toCharArray();
map.getOrDefault(ch[0]+ch[1], 0);   //returns 0

方法二

String string = "2*";
char[] ch = string.toCharArray();
map.getOrDefault(String.valueOf(ch[0])+String.valueOf(ch[1]), 0);  //returns 6

第一個片段總是返回“0”,而第二個片段可以返回正確的值。 我不明白怎么做。 有人可以啟發我嗎?

在以下情況下。

String string = "2*";
char[] ch = string.toCharArray();
map.getOrDefault(ch[0]+ch[1], 0);  

您正在添加ch[0] + ch[1] 字符添加為整數,這就是你想要得到的。 integer 和2*

您可以通過執行以下操作將總和轉換為字符連接:

System.out.println(map.getOrDefault(""+ch[0]+ch[1], 0));

原因是您從 char 數組中獲取的值仍被視為 int 值,因此,您正在 map 中搜索那些沒有的 char 值。 在第二個示例中,您明確告訴您的 map 獲取這些字符的字符串表示形式,這些字符位於您的 map 中。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM