【发布时间】:2015-07-29 10:27:02
【问题描述】:
我在尝试从 Map 获取值时遇到了问题。这是详细信息。
我声明了这个结构:
Map<String, Map<String, IrregularWord>> result4 = new TreeMap<>();
作为键,我使用了2_5_1、3_5_1、21_4_2 等字符串。当我填写result4 时,我得到了这个结果。
然后我尝试从result4 读取所有值并用它们做一些事情:
for (String key : result4.keySet()) {
Map<String, IrregularWord> words = result4.get(key);
// other code
}
当key == 2_5_1 我有words.size() == 14 而不是9,因为它是真实的result4 。
更新:此示例的正确值为9。
我的问题是为什么我得到了不正确的结果? Map的hash算法可能有问题?
感谢您的帮助。
【问题讨论】:
-
那么你认为什么是正确的? 9 还是 14?可能是 IntelliJ IDEA 错误?
-
正确的值是
9,但在这种情况下我得到了14 -
请告诉我们Minimal, Complete, and Verifiable example,以便我们重现您的问题。目前看起来你只是忽略了一些东西。至少提供更多的代码,包括地图填充和地图迭代,没有任何可能导致效果消失的遗漏。
-
@Soana,根据截图,这是第一个键,所以没有之前的迭代。
-
正如 Tagir 所说,如果您想要明确的答案,则需要包含相关代码。任何人都可以做的就是根据您当前的问题进行推测。
标签: java hashmap java-8 treemap keyset