2014-03-12 53 views
0

说我有一个目的过滤器列表和在Java生成的属性列表

@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有Predicates,它可以将对象列表过滤为一个较小的列表,不确定是否有类似的东西来过滤掉一列属性。

回答

0

如果您使用的是Java 8,或许你可以试试:

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

不幸的是,这个代码仍然是在Java 7中这是伟大的了解Java 8个地址这虽然! – n915

+0

也许是时候切换了:) –