如何检查特定的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没有空值
答案 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");
}