我有一系列匹配器,如List<Matcher<?>> filters
和一些元素集合。我想創建,檢查是否有匹配所有過濾器X元素的斷言,類似的東西:確認通過Hamcrest收集的匹配元素的數量
public void checkMatch(List<Matcher<?>> filters, int expectedSize){
MatcherAssert.assertThat(elementsToCheck, ???);
}
我寫了這樣的事情:
final Iterator<Element> iterator = this.elements.iterator();
final List<Element> filtered = new ArrayList<>();
while (iterator.hasNext()) {
final Element element = iterator.next();
boolean allMatches = true;
for (final Matcher<?> matcher : this.filters) {
if (!matcher.matches(element)) {
allMatches = false;
break;
}
}
if (allMatches) {
filtered.add(element);
}
}
MatcherAssert.assertThat(filtered,
Matchers.hasSize(this.expectedSize));
有沒有更好的解決辦法?