如果HashMap的键是字符串数组:
HashMap<String[], String> pathMap;
你可以使用新创建的字符串数组访问地图,还是必须是相同的String []对象?
pathMap = new HashMap<>(new String[] { "korey", "docs" }, "/home/korey/docs");
String path = pathMap.get(new String[] { "korey", "docs" });
它必须是同一对象。Java中HashMap
使用equals()
和的比较键只有在两个对象相同时才相等。
如果你想要的值相等,然后写一个包装了自己的容器类String[]
,并提供了相应的语义equals()
和hashCode()
。在这种情况下,最好使容器不可变,因为更改对象的哈希码会对基于哈希的容器类造成破坏。
编辑
正如其他人指出的那样,List
HashMap<List<String>, String> pathMap;
pathMap.put(
// unmodifiable so key cannot change hash code
Collections.unmodifiableList(Arrays.asList("korey", "docs")),
"/home/korey/docs"
);
// later:
String dir = pathMap.get(Arrays.asList("korey", "docs"));
问题内容: 我使用布尔数组作为HashMap的键。但是问题是,尽管元素相同,但当将另一个数组作为键传递时,HashMap无法获取键。(因为它们是不同的对象)。 如何使其与数组作为键一起使用?这是代码: 这两个数组和都包含相同的元素,但是HashMap不会为返回任何内容。 我该如何运作? 问题答案: 您无法以这种方式这样做。都和将有不同的值,因为该方法是从继承,它使用参考来计算哈希码(默认实现)。因
问题内容: Java可以使用String作为索引数组键吗?例: 问题答案: 没有。 为此,您必须使用地图。
问题内容: 我试图在HashMap中找到一个键。我可以使用’get’打印选定的键,但是在if语句中使用’containsKey’时,找不到该键。 我知道该键存在于Map中,但它一直返回false。有什么想法的人吗? 我的代码: 这是Location类的代码: 问题答案: 您必须确保该类已正确实现其和方法(文档)。也就是说,如果两个对象实际上相等,则它们应该共享一个公共哈希码,并且它们的方法应该返回
我有两张桌子: 用户(用户名、密码) 配置文件(profileId,gender,dateofbirding,...) 目前我正在使用这种方法:每个Profile记录都有一个名为“userid”的字段作为外键,它链接到用户表。当用户注册时,他的配置文件记录将自动创建。 我对我朋友的建议感到困惑:将“userid”字段作为外部和主键,并删除“profileid”字段。哪种方法更好?
我已经创建了一个方法,它接受一个hashmap作为输入,将值转换成一个数组,使用气泡排序对数组进行排序,然后我希望它使用排序后的值从初始hashmap中选择前N个索引键。我知道这不是最好的方法,但这是好的(我写了这个方法作为一个替代)。 该方法返回null,因为maxItems为空,并且“System.out.println(Entry.GetKey());”不会将任何内容打印到控制台。 谢谢你的
我看不出我的bug在哪里,我得到的是一个字符串数组,逐行包含以下值: 我想使用右边的字符串作为键将这些值放在HashMap中,并将值设置为ArrayList,这样,如果我请求“San Jose”的目的地,它将遍历列表并返回“旧金山”和“Anchorage”。我还没有设法使关键价值关系正常运作。方法运行完成时的原因。对于任何一个城市来说,其价值都将是其最后一次迭代(旧金山)的价值,返回纽约、檀香山和