Java 带 ArrayList 空检查的链接 HashMap

Java Linked HashMap with ArrayList empty checking

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

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

结果表如下

键 = 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,键具有空值)

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

您的值是 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);
    }
);

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

private boolean checkEmptyVal(String key){

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

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

        return result;
    }

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

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

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

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

依次检查所有键:

// 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");
}