说我有一个对象
@AllArgsConstructor
class Foo {
String name;
int age;
}
public static void main() {
List<Foo> fooList = new ArrayList<Foo>();
... populate list...
List<String> filteredByName = getFilteredList(fooList);
}
public List<String> getFilteredList(List<Foo> fooList) {
List<String> nameList = new ArrayList<String>();
for(Foo foo : fooList) {
if("someword".isGreaterThan(foo.getName()) {
nameList.add(foo.getName());
}
}
}
我想要一个getFilteredList的一行代表。 Google Guava / Apache有谓词,它可以将对象列表过滤到较小的列表,不确定是否有类似的东西单独过滤掉属性列表。
答案 0 :(得分:0)
如果您使用的是Java 8,可以尝试类似:
public List<String> getFilteredList(List<Foo> fooList) {
return fooList.stream().filter(f -> "someword".compareTo(f.getName()) > 0).collect(Collectors.toList());
}