按属性筛选对象列表并在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解决了这一问题非常好!也许是时候切换了:)