HashMap<String, int[]> H = new HashMap<String, int[]>();
H.put("drdetroit", new int[]{1,2});
H.put("drdetroit", new int[]{1,3});
System.out.println(H.get("drdetroit").toString());
[[email protected]
我認爲這是散列值(是嗎?)。我怎樣才能讓它打印我的實際值?
HashMap<String, int[]> H = new HashMap<String, int[]>();
H.put("drdetroit", new int[]{1,2});
H.put("drdetroit", new int[]{1,3});
System.out.println(H.get("drdetroit").toString());
[[email protected]
我認爲這是散列值(是嗎?)。我怎樣才能讓它打印我的實際值?
這就是你以後我相信。 由於HashMap只能存儲唯一的密鑰,所以如果你想爲一個(1)密鑰提供多個值,你就不得不使用一個列表。
也許有更好的方法來實現這一目標,但它的工作原理和本身非常具有表現力,並且非常清楚它的作用和方式。
HashMap現在接受List接口,因此可以接受任何實現它的列表類型。這是相當整潔! :)
ArrayList<int[]> values = new ArrayList<int[]>();
values.add(new int[]{1,2});
values.add(new int[]{1,3});
HashMap<String, List<int[]>> H = new HashMap<String, List<int[]>>();
H.put("drdetroit", values);
for(String key : H.keySet()) {
for(int[] array : H.get(key)){
System.out.println(Arrays.toString(array));
}
}
因爲您嘗試從數組中創建一個字符串!
例如,你可以這樣做:
String myArray = H.get("drdetroit");
System.out.println(myArray[0]);
嗯,不,他只是打印它的對象值。 – Shark
您使用Arrays.toString(H.get("drdetroit"));
這隻會打印第一個值而不是第二個值 –
這是因爲一個Map只能有一個值,每個鍵只會覆蓋第一個值,第二個值是 –
@Aviram Segal:是否有一個對象可以使用,每個對象允許多個值鍵? –
System.out.println(Arrays.toString(H.get("drdetroit")));
我 - 代表int
陣列和c3c749是哈希碼
這是行不通的,你給一個字符串Arrays.toString –
@AviramSegal這是一個錯字錯誤:(因爲我直接輸入它 –
從downvote改爲upvote :) –
嘗試使用此方法打印數組值 -
System.out.println(Arrays.toString(H.get("drdetroit")));
H.get("drdetroit").toString()
在hexString中返回數組類名和@和散列碼。
public String toString() {
return getClass().getName() + "@" + Integer.toHexString(hashCode());
}
如果你想打印使用'的toString()'該陣列上的數組的值,你會得到一些東西的價值觀完全不同,它並不重要,如果它是一個HashMap或不。使用'Arrays.toString(array)'而不是 – andreih
另外你的hashmap只打印第一個值,所以不要混淆。 :) –
@limelights:我怎樣才能讓它打印他們兩個= –