【发布时间】:2017-10-08 22:52:48
【问题描述】:
我有一个HashMap,格式如下:
HashMap<List<String>, List<String[]>>
这个 hashmap 已经被填充,这是我查看 keyset 时返回的结果的一部分:
[[124, 1], [136, 2], [136, 1], [257, 1], [502A, 1], [269, 1], [111, 1], [232, 1], [123, 1], [93, 1], [81, 1], [93, 2], [6N, 1]]
(未满,因为整篇太长了)
我正在尝试 for 循环以使用此代码遍历我的所有键集:
for(List<String> key : hashmap.keySet()){
if(key.get(0) == input){
if(key.get(1) == "1"/*second part of key*/){
dir1.add(hashmap.get(key).get(0)[1]);
}
else if(key.get(1) == "2"/*second part of key*/){
dir2.add(hashmap.get(key).get(0)[1]);
}
}
}
但是,当我设置断点并调试项目时,我意识到 for 循环只循环一次。我做错了什么?
【问题讨论】:
-
//do something在做什么?它是否包含break/return语句?您在执行期间是否更改了hashmap? -
我只是从 hashmap 中取出东西,而我的 return 语句在 for 循环之外
-
我认为提供“做某事”部分(或至少是重现您的错误的最小版本)可能是可取的。根据提供的代码,没有错,但也没有太多……
-
拥有更多细节会很有用。从你写的来看,一切正常
-
key.get(0) == input对我来说很可疑;它似乎通过引用而不是内容来比较字符串。请改用equals()。