0
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());

它打印出来

[I@c3c749

我假设这是散列值(是吗?)。我怎样才能让它打印我的实际值?

4

5 回答 5

2

你用Arrays.toString(H.get("drdetroit"));

于 2012-12-05T10:05:19.243 回答
2

这就是我相信的你所追求的。由于 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));
    }
}
于 2012-12-05T10:17:09.240 回答
1
System.out.println(Arrays.toString(H.get("drdetroit")));

I - 代表int数组,c3c749 是哈希码

于 2012-12-05T10:06:53.993 回答
0

因为你试图从一个数组中创建一个字符串!

例如,您可以这样做:

String myArray = H.get("drdetroit");
System.out.println(myArray[0]);
于 2012-12-05T10:05:04.750 回答
0

试试这个来打印数组值 -

System.out.println(Arrays.toString(H.get("drdetroit")));

H.get("drdetroit").toString()在 hexString 中返回数组类名和 @ 和哈希码。

public String toString() {
    return getClass().getName() + "@" + Integer.toHexString(hashCode());
}
于 2012-12-05T10:08:12.517 回答