java - HashMap 违背了我的值(value)观

标签 java

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

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

最佳答案

我相信这就是你所追求的。 由于 HashMap 只能存储唯一的键,因此如果您想要一 (1) 个键有多个值,则必须使用列表。

也许有更好的方法来实现这一目标,但它正在发挥作用,并且本身非常具有表现力,并且非常清楚它的作用和方式。

HashMap 现在接受 List 接口(interface),因此可以接受任何实现它的列表类型。这非常整洁! :)

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));
    }
}

关于java - HashMap 违背了我的值(value)观,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13720595/

相关文章:

java - 写C*超时以不可预测的方式出现

java - 如何使用 Java Stream 查找共享键的所有值的平均值?

java - 从 Spring websocket session 中提取远程端点对象

java - 在 ll(1) 中检查一种语法与另一种语法的算法

java - 哪个更准确? java.lang.Math.E 或 Math.exp(1.0)

java - 在数组中打印 "x"以下的所有数字

java - 实例呈指数增长 - 消耗内存

java - 如何在 OS X 10.9.1 Mavericks 上安装 JDK for Java 1.6 SE

java - Eclipse 不解析 javax.media.opengl.GL3 导入

java - Spring Cloud : Microservice authentication works through Eureka Discovery, 但不是通过 Zuul