按属性过滤对象列表,并在java中生成属性列表

时间:2014-03-12 19:33:58

标签: java list filter

说我有一个对象

@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有谓词,它可以将对象列表过滤到较小的列表,不确定是否有类似的东西单独过滤掉属性列表。

1 个答案:

答案 0 :(得分:0)

如果您使用的是Java 8,可以尝试类似:

public List<String> getFilteredList(List<Foo> fooList) {
    return fooList.stream().filter(f -> "someword".compareTo(f.getName()) > 0).collect(Collectors.toList());
}