Java 如何使用谓词筛选列表 私有静态类FilterByStringContains实现谓词{ 私有字符串过滤器字符串; 私有FilterByStringContains(最终字符串filterString){ this.filterString=filterString; } @凌驾 公共布尔应用(最终字符串){ 返回字符串.contains(filterString); } }

Java 如何使用谓词筛选列表 私有静态类FilterByStringContains实现谓词{ 私有字符串过滤器字符串; 私有FilterByStringContains(最终字符串filterString){ this.filterString=filterString; } @凌驾 公共布尔应用(最终字符串){ 返回字符串.contains(filterString); } },java,Java,我有一个字符串列表,我想按指定的字符串对其进行筛选,以便返回的值只包含指定字符串的列表。我打算使用如上所述的谓词,但不确定如何应用它来过滤列表使用Guava方法或Apache commons方法如何?Guava的方法返回集合的视图,而ApacheCommons的方法就地修改集合。不要重新发明轮子 我假设这里的谓词是从?如果是这样,您可以使用: Iterable filtered=Iterables.filter(原始,谓词); 然后,如果需要,从中创建一个列表: Iterable<Str

我有一个字符串列表,我想按指定的字符串对其进行筛选,以便返回的值只包含指定字符串的列表。我打算使用如上所述的谓词,但不确定如何应用它来过滤列表

使用Guava方法或Apache commons方法如何?Guava的方法返回集合的视图,而ApacheCommons的方法就地修改集合。不要重新发明轮子

我假设这里的
谓词是从?如果是这样,您可以使用:

Iterable filtered=Iterables.filter(原始,谓词);
然后,如果需要,从中创建一个列表:

Iterable<String> filtered = Iterables.filter(original, predicate);
List filteredCopy=Lists.newArrayList(已过滤);

。。。但是如果你真的想把它作为一个列表,我建议你把它复制到另一个列表中。如果你只是想迭代它(并且只迭代一次),那么就坚持使用iterable。

看看这个——听起来就像你想要的。你是在使用
Guava
还是
org.apache.commons.collections.Predicate
?为了澄清这一点,Guava的方法返回一个视图,这是一种新的集合,“但是没有明确地进行构造。@路易斯瓦瑟曼谢谢你的澄清,我编辑了我的答案。
Iterable<String> filtered = Iterables.filter(original, predicate);
List<String> filteredCopy = Lists.newArrayList(filtered);