我有一个对象列表,并且列表非常大。对象是
class Sample {
String value1;
String value2;
String value3;
String value4;
String value5;
}
现在我必须在列表中搜索对象的特定值。说如果 value3=='three'
我必须返回那些对象(我的搜索并不总是基于 value3)
名单是
List<Sample> list = new ArrayList<Sample>();
什么是有效的方法?
谢谢。
最佳答案
你可以试试Apache Commons Collections .
有一个类CollectionUtils允许您按自定义 Predicate 选择或过滤项目.
你的代码应该是这样的:
Predicate condition = new Predicate() {
boolean evaluate(Object sample) {
return ((Sample)sample).value3.equals("three");
}
};
List result = CollectionUtils.select( list, condition );
更新:
在 java8 中,使用 Lambda 和 StreamAPI这应该是:
List<Sample> result = list.stream()
.filter(item -> item.value3.equals("three"))
.collect(Collectors.toList());
好多了!
关于java - 如何在 Java 对象列表中搜索,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13138990/