- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我目前在使用 Java 中的 Hashtable 时遇到了一些问题,其中 FEightPuzzle 是我创建的一个类。
在我的类中,我有一个字符串,它存储每个实例的键。现在,在我的程序中,当我在 Hashtable 内部检查重复实例时,我有时会“找到”一些,而实际上找到的实例是不同的。
以我调用 bol.containsKey(current.key) 为例,其中 bol 是一个 HT,current 是一个 FEightPuzzle。
当这是真的时,我检查键的值,它们是
current.key =
"8 14 11 0 6 12 13 1 10 4 5 9 15 2 3 7"
bol.get(current.key).key =
"12 8 4 0 13 9 5 1 14 10 6 2 15 11 7 3"
有值(value)观
current.key.hashCode() = -950607924
bol.get(current.key).key.hashCode() = -1856769042
很抱歉打扰你,但这个问题真的让我很困扰,这是我今晚最不希望说实话的事情(你不喜欢这样吗)...任何提示或答案将不胜感激!
最佳答案
我重新阅读了您的问题,据我了解您遇到了以下问题:
你会
bol.containsKey(current.key)
检查 current
是否已经在 bol
中。
当它返回 true 时,您希望 current.key
映射到的值确实应该是 current
,但正如您的哈希码所示,它不是。
问题可能是以下之一:
一开始您没有将拼图对象正确地放入哈希表中。
你应该这样做
bol.put(somePuzzle.key, somePuzzle)
当谜题在 map 中时,您更改了 key 。这是不允许的。
在映射中添加条目后,如果不删除/重新插入映射,则不能更改 key 。
Hashtable 将根据您在插入时提供的键查找对象。
您不小心为多个不同的拼图对象提供了相同的键(在这种情况下,一个put
将覆盖之前的一个)
一个建议是让 FEightPuzzle 覆盖 hashCode 和 equals 并使用 HashSet 而不是 Hashtable。
关于即使字符串和哈希码不同,Java Hashtable .containsKey(String key) 也会返回 true ...如何?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5632315/
java.util.Map.containsKey(Object key)文件说: @throws ClassCastException if the key is of an inappropria
我正在为大学类(class)实现一个 Web 项目,该项目使用 struts2,当我运行该项目时,它会在 containsKey() 中阻塞。它不打印任何字符串。 这是我遇到问题的一些代码: pack
我的字典的 ContainsKey() 方法不起作用 - 我如何“覆盖 GetHashCode()”以使其起作用? 最佳答案 您必须同时覆盖 GetHashCode()和 Equals()来表示等价。
我正在尝试将超链接存储为 map 中的键,我正在使用 multimap private Map> record=new HashMap>(); 我正在使用以下方法检查超链接是否已经存在于 map 中
好的,我需要一点帮助。我有一本通用词典“cashdata”。这个字典的键是对象(查询对象,我定义的一个类)。查询对象有“Terms”字段,它是一个字符串列表,和一个“Operator”字段,它是一个枚
我在用 gradle 构建我的 Android 项目时遇到了这个错误。它大约每周发生一次。 FAILURE: Build failed with an exception. * What went w
尝试实现陷入奇怪问题的简单任务: class User{ String login; String pwrd; User(String lg,String pw){
使用此代码时出现崩溃: if (!savedInstanceState.containsKey("mybool")) { // my code } 我的onCreate(): @Overri
我正在用 java 编写 HashMap 的实现,但在 containsKey 方法中查找正确的存储桶时遇到了一些问题 public class MyHashMap { LinkedList[] ta
构造函数接受两个数组,我想将它们放入我的 HashMap 中,但如果映射已经包含其中一个数组中的单词,那么我想抛出异常。除非重复项是数组项中的最后一项,否则这种方法有效。为什么会发生这种情况? pri
程序将根据If语句打印不正确的键和值。有人能解释一下为什么吗? 例如键 = 汤姆叔叔 + 值 = 02086542222 键 = Harry + 值 = 020826262 查询=汤姆叔叔 返回 =
已关闭。此问题需要 debugging details 。目前不接受答案。 编辑问题以包含 desired behavior, a specific problem or error, and the
我正在尝试将位置列表中的所有唯一坐标添加到单个 HashMap 中,该 HashMap 将坐标作为键,将计数作为值。关键是由“$”符号连接的经度和纬度。 //String = coordinates
This question already has answers here: Java HashMap containsKey returns false for existing object (
这个问题已经有答案了: What is the Java ?: operator called and what does it do? (17 个回答) Can Java's ternary/con
我基本上是在尝试将一些组织的 ID 和名称缓存在字典中。我不断收到错误消息:Item with Same Key has already been added。这对我来说很奇怪,因为第一个 if bl
我正在为一个使用家庭概念的应用程序创建一个插件。每个 Family 都属于一个 FamilyCategory,每个 Family 都包含 FamilySymbols。像这样的漂亮树结构: 家庭类别(门
这个问题已经有答案了: What is a NullPointerException, and how do I fix it? (12 个回答) 已关闭 7 年前。 我对 Java 很陌生。尝试访问
这是我的代码: import java.util.HashMap; class MyString { String string; MyString(String string) {
请解释字典的'getAt'方法失败的原因 List infoKeys = new List(infoDict.Keys); if (infoKeys.Contains(TorrentFileKeyWo
我是一名优秀的程序员,十分优秀!