private static class FilterByStringContains implements Predicate<String> {
private String filterString;
private FilterByStringContains(final String filterString) {
this.filterString = filterString;
}
@Override
public boolean apply(final String string) {
return string.contains(filterString);
}
}
我有一个字符串列表,我想用指定的字符串过滤它,所以返回的值只包含指定字符串的列表。我将使用上面的谓词,但不知道如何应用它来过滤列表
答案 0 :(得分:10)
我假设Predicate
来自Guava?如果是这样,您可以使用Iterables.filter
:
Iterable<String> filtered = Iterables.filter(original, predicate);
然后根据需要建立一个列表:
List<String> filteredCopy = Lists.newArrayList(filtered);
...但是我只 建议将它复制到另一个列表中,如果你真的希望它作为列表。如果你只是要迭代它(只有一次),坚持迭代。
答案 1 :(得分:4)