我有一个这种格式的HashMap
:
HashMap<List<String>, List<String[]>>
此哈希映射已填充,这是我查看键集时返回的结果的一部分:
[[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 循环只循环一次。我做错了什么?
你应该为键使用适当的类,而不是List<String>
您应该使用.equals.
比较Strings
,即 "1".equals(key.get(1))
实际的foreach
看起来不错,所以如果它没有循环,那么要么是某些东西破坏/异常你脱离循环,要么你的数据结构实际上只包含一个项目。它也完全有可能循环不止一次,但由于if
语句的不良比较,您认为它不是。
我首先检查您的Map
是否真的包含多个条目。您目前使用数组列表列表的映射设置它的方式只是要求一个令人困惑的混乱。
对不起,伙计们,问题出在我的 Netbeans 或我的计算机上,但我重新启动了计算机,现在一切正常。感谢所有试图提供帮助的人