首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何使用lambda表达式根据一个变量对对象列表进行排序?

如何使用lambda表达式根据一个变量对对象列表进行排序?
EN

Stack Overflow用户
提问于 2015-02-03 14:46:54
回答 2查看 1.2K关注 0票数 1

我尝试使用lambda表达式根据JDK1.8中的名称对对象列表进行排序。但它显示了编译错误:

赋值的左边必须是变量。

代码:

代码语言:javascript
复制
    Train trains = new Train();
    trains.setName("Yerlin");
    trains.setCode("YYT");
    Train trains2 = new Train();
    trains2 .setName("Delhi");
    trains2 .setCode("DEH");
List<Train > traindetail= new ArrayList<Train >();
    traindetail.add(trains);
    traindetail.add(trains2);
    traindetail.stream().sorted(Train object1 , Train object2) -> object1.getName().compareTo(object2.getName()));
EN

回答 2

Stack Overflow用户

发布于 2015-02-03 14:50:02

你错过了一辆帕伦:

代码语言:javascript
复制
airport.stream().sorted(Train object1 , Train object2) -> object1.getName().compareTo(object2.getName()));
                        ^--here

但是,建议您使用更简洁的语法:

代码语言:javascript
复制
airport.stream().sorted(Comparator.comparing(Train::getName));

那么就没有父母可以错过了。通过使用Streams,我们通常可以自由地应用静态导入,因此

代码语言:javascript
复制
airport.stream().sorted(comparing(Train::getName));

我看到您没有分配流对象,也没有应用任何终端操作,所以您应该知道上面的表达式仍然没有对您的数据采取任何行动。您刚刚声明,一旦应用了终端操作,流将被排序。

票数 5
EN

Stack Overflow用户

发布于 2015-02-03 14:48:34

使用

代码语言:javascript
复制
//                      v add ( here
airport.stream().sorted((Train object1 , Train object2) ->
  object1.getName().compareTo(object2.getName()));
票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/28301710

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档