我有一个对象列表,例如
public class Foo {
private String str;
private Integer i;
// Getter
}
//
List<Foo> list;
现在我想搜索例如String str等于someString
的所有对象什么是最好的方法来实现它?当然,我可以迭代整个List并将每个Object与我的search-String(或者搜索整数,或者我正在寻找的任何东西)进行比较,但我想知道是否有一个现成的解决方案(在我看来哪里是基本的)任务)例如在Collection-Framework或其他地方?
答案 0 :(得分:2)
看一下google的Guava并过滤api:
https://code.google.com/p/guava-libraries/wiki/FunctionalExplained
答案 1 :(得分:1)
如果您想使用guava
,您可以执行以下操作:
Foo result = Iterables.find(list, new Predicate<Foo>() {
public boolean apply(Foo foo) { return foo.getInteger() == 3; }
});
或者在即将到来的java8
中,您可以使用lambda表达式:
list.stream()
.filter( f -> f.getInteger() == 3)
.collect(Collectors.toList());
你不需要第三方库:)