2014-02-23 35 views
1

我正在使用Apache Collections的MultiValueMap来收集不同类型的单词(名词,动词等),并且我希望在继续之前检查每个单词类型是否至少有一个。检查是否所有与MultiValueMap关联的集合都是非空的?

一般概述像这样(开始键后):

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

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

有没有一种简洁的方法来检查这种情况,也许从API的方法?

+1

迭代通过所有的值,并检查各值是不是空名单。请注意,MultiValueMap不是标准的Java类,并且您没有说明它来自哪里。 –

+0

@JBNizet拍!我正在冲出去,但没有我在我的手机上,我可以修复它。 – Pureferret

回答

1

这听起来像你试图继续你的循环,直到每个键至少有一个值。如果你的数据集没有完成,这会给你带来无限循环的巨大可能性。为了达到这一点,虽然你需要看看钥匙,而不是价值观。如果您知道有多少种字词类型,则应该使用以下内容。

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

否则,你就需要你正在寻找和使用类似字类型的集合...

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

Doh!现在似乎很明显。 – Pureferret

相关问题