我正在使用来自Apache Collections的MultiValueMap来收集不同类型的单词(名词,动词等),并且我想在继续之前检查每种单词类型中至少有一种。

总体轮廓如下(在初始化密钥之后):

MultiValueMap wordMap = new MultiValueMap().decorate(new HashMap(), LinkedList.class);
while (wordMap.notAllEmpty()){
    wordMap.put(wordType,word)  // eg, Noun, Giraffe
}


但是我没有notAllEmpty()的方法。我尝试了.values().contains(null),但空映射不包含null。 Likewiese .values().isEmpty()无效,因为所有值都放在一起。

是否有一种简洁的方法来检查这种情况,也许使用API​​中的方法?

最佳答案

听起来就像您试图继续循环,直到每个键至少有一个值。如果您的数据集不完整,这将使您很可能陷入无限循环。为了达到目的,您需要查看键而不是值。如果您知道有多少种单词类型,则应该使用以下内容。

int totalWordTypes = 10;
while (wordMap.keySet().size() < totalWordTypes) {
   //...
}


否则,您将需要寻找的单词类型的集合,并使用类似...

while (!wordMap.keySet().containsAll(wordTypesCollection)) {
   //...
}

关于java - 检查与MultiValueMap关联的所有集合是否都是非空的?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/21966654/

10-11 10:57