Java:使用entrySet()迭代嵌套的hashmap

时间:2013-07-22 09:41:30

标签: java hashmap

我正在尝试使用entrySet()迭代嵌套的hashmap。 Multi-hashmap被称为数据,我正在尝试在其包含的许多哈希映射中搜索一个值。但是,即使看起来我到了正确的地方,它也与我的搜索字词不符。当我打印值时,我看到搜索项确实是当前循环中的hashmap中的值之一。这是代码 -

HashMap<String,HashMap<String,String>> data =  driver.data.get(dsName);

for (int i = 0; i < arrWhereValues.length; i++) {
String value = null;
for (Entry<String, HashMap<String, String>> entry : data.entrySet()) {
    System.out.println("VALUE:::" +entry.getValue());
    System.out.println("SEARCH FOR::"+arrWhereValues[i]);
    if(arrWhereValues[i].equals(entry.getKey())){
        value = entry.getKey();
        System.out.println("Value in case 1::" +value);
    }
    else if(entry.getValue().containsValue(arrWhereValues[i])){ //Why doesn't it enter here???
        System.out.println("atleast this much was correct!!");
        System.out.println(entry.getValue().entrySet());
        for (Entry<String, String> v : entry.getValue().entrySet()) { //Find a better way of doing this. 
            if(v.getValue().contains(arrWhereValues[i])){
                value = v.getKey();
                System.out.println("Value in case 2 ::"+value);
            }
        }
    }
}

输出:

VALUE:::{name=Testing User , slug_primary=null, slug_secondary=null}
SEARCH FOR::Testing User

我做错了什么?

1 个答案:

答案 0 :(得分:0)

使用类似此方法的解决方案来打印所有哈希映射的内容:

Iterate through a HashMap

可能某些键/值不是您所期望的 - 请参阅Alex的评论“测试用户”似乎有一个尾随空格。此外,似乎“测试用户”是嵌套散列映射中的键之一,而不是在您搜索它的外部散列映射中。