Java for循环不遍历我的hashmap';s键集

Java for循环不遍历我的hashmap';s键集,java,for-loop,hashmap,Java,For Loop,Hashmap,我有一个HashMap格式如下: HashMap<List<String>, List<String[]>> (因为整件东西太长,所以没有满) 我正在尝试使用以下代码创建for循环,以遍历我的所有键集: for(List<String> key : hashmap.keySet()){ if(key.get(0) == input){ if(key.get(1) == "1"/*second part of key

我有一个
HashMap
格式如下:

HashMap<List<String>, List<String[]>>
(因为整件东西太长,所以没有满)

我正在尝试使用以下代码创建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(列表键:hashmap.keySet()){
if(key.get(0)=输入){
if(key.get(1)=“1”/*键的第二部分*/){
dir1.add(hashmap.get(key.get(0)[1]);
}
else if(key.get(1)=“2”/*键的第二部分*/){
dir2.add(hashmap.get(key.get(0)[1]);
}
}
}

然而,当我设置断点并调试项目时,我意识到for循环只循环一次。我做错了什么?

您应该为键使用适当的类,而不是
列表

您应该使用
.equals.
来比较
字符串
,即
“1”.equals(key.get(1))

实际的
foreach
看起来很好,因此如果它没有循环,那么要么有什么东西打破了循环,要么你的数据结构实际上只包含一项。也完全有可能循环不止一次,但由于
if
语句的比较不好,您认为它不是


我首先检查你的
地图
是否包含多个条目。你现在用数组列表的映射来设置它的方式只会造成混乱

好的,对不起,伙计们,问题出在我的netbeans或我的计算机上,但我重新启动了我的计算机,现在一切都正常了。感谢所有试图帮助的人

什么是
//做点什么
做什么?它是否包含
break
/
return
语句?您是否在执行过程中更改了
hashmap
?我只从hashmap中获取内容,我的return语句不在for循环中。我认为提供“Do something”部分(或者至少是复制错误的最小版本)可能是明智的。根据提供的代码,没有什么错误,但是没有太多错误……如果有更多的细节,这将是非常有用的。从你写的内容来看,似乎所有ok
key.get(0)=input对我来说都是可疑的;它似乎通过引用而不是内容来比较字符串。改为使用
equals()
。+1在我看来,如果(key.get(0)=输入){与大多数值不匹配,因此无需执行任何操作即可进行迭代。初学者程序员假设只迭代一次,等等。我尝试在for循环中每次都进行注释,但它仍然只循环一次。是的,我的映射确实有多个entries@LimJunWei打印出hashMap.size()和hashMap.keySet().size()在进入循环之前。你会得到什么?如果你把一个print语句作为循环中的第一个语句,只是打印密钥或其他东西,会发生什么?如果这不起作用,那么我所能建议的就是制作一个SSCE,复制问题并发布它,因为你发布的症状和代码不兼容。这听起来几乎是错误的就像您为(List key:hashmap.keySet());{
(请参阅该行中的;)所做的
,但这不在上面的代码中
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]);
            }
        }
}