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:我怎样才能让它打印他们两个= –