带有ArrayList空检查的Java Linked HashMap

时间:2015-08-28 08:45:09

标签: java hashmap linkedhashmap

如何检查特定的kay在LinkedhashMap中是否具有空值

Map<String,List<String>>resultTable = new LinkedHashMap<String, List<String>>();

以下是resultTable

键= Sr.ID,值为{660316, 660320, 590089, 661725, 661865, 661864, 661862, 660300} 键= Docket,值为{0150, 0150b1, 142747, 1725.186589, 2708.5, 2738.56, 45rdfg, 56t} 键= Rec No,值为{,8821893, , , , , , , }

我们如何检查特定密钥(即Sr.ID或Docket或Rec No.)是否在列表中具有空值(Rec No,Key具有空值)

我们如何检查特定密钥(即Sr.ID或Docket或Rec No.)是否在列表中没有空值 Docket Key没有空值

3 个答案:

答案 0 :(得分:3)

您的值属于List<String>类型。

要检查任何给定键的列表元素是否为空,您可以简单地:

// iterate map entries
for (String key: resultTable.keySet()) {
    // TODO null check!
    if (resultTable.get(key).contains("")) {
        // list has an empty element
        System.out.printf("Found an empty value for %s%n", key);
    }
}

注意

这是一个带有BiConsumer<String,List<String>> lambda的Java 8语法:

resultTable.forEach(
    (s,l) -> {
        // TODO null check!
        if (l.contains("")) System.out.printf("Found an empty value for %s%n", s);
    }
);

答案 1 :(得分:2)

这是检查特定键的空值的简单方法:

private boolean checkEmptyVal(String key){

        boolean result = false;
        List<String> val = resultTable.get(key);

        if(val != null && val.contains("")) {
            result = true;              
        }

        return result;
    }

答案 2 :(得分:0)

根据您的示例,空值不是null,而是空字符串。

要检查列表中的空值,您可以执行list.contains("")

翻译成您的上下文,这是:

if (resultTable.get(key).contains("")) {
    // empty value here
}

Mena suggested一个接一个地检查所有密钥:

// iterate map values
for (List<String> value: resultTable.values()) {
    if (value.contains("")) {
        // list has an empty element
    }
}

您还可以添加代码以从列表中删除所有空值:

while (list.remove("")) {
    log.debug("Empty value removed");
}