Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/344.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
按属性筛选对象列表并在java中生成属性列表_Java_List_Filter - Fatal编程技术网

按属性筛选对象列表并在java中生成属性列表

按属性筛选对象列表并在java中生成属性列表,java,list,filter,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 Lis

说我有个目标

@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());
     }
  }
}
@allargsconstuctor
福班{
字符串名;
智力年龄;
}
公共静态void main(){
列表列表=新的ArrayList();
…填充列表。。。
List filteredByName=getFilteredList(傻瓜列表);
}
公共列表getFilteredList(列表列表){
列表名称列表=新的ArrayList();
对于(Foo-Foo:傻瓜){
如果(“someword.isgreater”大于(foo.getName()){
add(foo.getName());
}
}
}
我想要getFilteredList的一行表示形式。
Google Guava/Apache有谓词,可以将对象列表过滤到更小的列表中,不确定是否有类似的东西可以单独过滤属性列表。

如果您使用Java 8,可以尝试以下方法:

public List<String> getFilteredList(List<Foo> fooList) {
    return fooList.stream().filter(f -> "someword".compareTo(f.getName()) > 0).collect(Collectors.toList());
}
公共列表getFilteredList(列表列表列表){
返回foulist.stream().filter(f->“someword”.compareTo(f.getName())>0.collect(Collectors.toList());
}

不幸的是,这段代码仍在java 7上。知道java 8解决了这一问题非常好!也许是时候切换了:)