for循环不迭代我的hashmap的键集

时间:2017-05-10 10:32:52

标签: java for-loop hashmap

我有HashMap格式:

HashMap<List<String>, List<String[]>>

此hashmap已经填充,这是我查看键集时返回的结果的一部分:

[[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(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循环只循环一次。我做错了什么?

2 个答案:

答案 0 :(得分:2)

您应该为密钥使用适当的类,而不是List<String>

您应该使用Strings比较.equals.,即"1".equals(key.get(1))

实际foreach看起来很好,所以如果它没有循环,那么任何东西都会破坏/异常你离开循环或者你的数据结构实际上只包含一个项目。它也完全有可能不止一次循环,但是由于你认为它不是if语句的错误比较。

我首先检查您的Map是否真的包含多个条目。你现在用数组列表列表的映射设置它的方式只是要求一个令人困惑的混乱。

答案 1 :(得分:0)

好的抱歉,问题是我的netbeans或我的电脑,但我重新启动了我的电脑,现在一切正常。谢谢所有试图帮助的人