我正在使用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)
但空地图不包含空。Likewiese .values().isEmpty()
不起作用,因为所有值都放在一起。
有没有一种简洁的方法来检查这种情况,也许使用 API 中的方法?
听起来你试图继续循环,直到每个键至少有一个值。如果您的数据集不完整,这将为您打开无限循环的很大可能性。要达到目的,您需要查看键,而不是值。如果您知道有多少种单词类型,那么您可能应该使用以下单词。
int totalWordTypes = 10;
while (wordMap.keySet().size() < totalWordTypes) {
//...
}
否则,您将需要您正在寻找的单词类型的集合,并使用类似...
while (!wordMap.keySet().containsAll(wordTypesCollection)) {
//...
}