我使用的是ImmutableList数据结构。过滤列表内容的最佳方法是什么,并在广告资源的description属性中返回包含该字词的所有元素。
答案 0 :(得分:0)
如果您使用的是Java 8,请尝试以下操作:
ImmutableList<String> immutableList = ImmutableList.of("s1", "s2");
List<Object> collect = immutableList.stream().filter(s -> s.endsWith("1")).collect(Collectors.toList());
// collect: [s1]
答案 1 :(得分:0)
我的解决方案:您需要编写一个可以接受参数的谓词。然后使用它过滤您的收藏。
public static void main(String args[]) {
Item i1 = new Item("Pen", "To write...");
Item i2 = new Item("Phone","to call someone..." );
List<Item> items = new ArrayList<Item>();
items.add(i2);
items.add(i1);
Collection<Item> result = Collections2.filter(items, filterDescription("To write..."));
for(Item item : result){
System.out.println(item);
}
}
Method接受一个参数并转换谓词
public static Predicate<Item> filterDescription(final String desciption){
return new Predicate<Item>() {
@Override
public boolean apply(Item input) {
return input.getDescription() != null && input.getDescription().contains(desciption);
}
};
}
结果:
--- exec-maven-plugin:1.2.1:exec(default-cli)@ App ---
项目{description =要写...,title = Pen,price = 0.0,count = 0}
答案 2 :(得分:0)
使用FluentIterable:
final String description = "search string";
final Iterable<Item> filtered = FluentIterable.from(unfiltered)
.filter(new Predicate<Item>() {
@Override
public boolean apply(final Item input) {
return input.getDescription().contains(desciption);
}
});
您可以使用FluentIterable链接过滤器,转换(等)。如果你想得到一个列表或一组,只需添加&#34; .toList()&#34;或&#34; .toSet()&#34;最后。