我尝试使用lambda表达式根据JDK 1.8中的名称对对象列表进行排序。但它显示编译错误:
作业的左侧必须是变量
代码:
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()));
答案 0 :(得分:5)
你错过了一个paren:
airport.stream().sorted(Train object1 , Train object2) -> object1.getName().compareTo(object2.getName()));
^--here
但是,建议您使用更简洁的语法:
airport.stream().sorted(Comparator.comparing(Train::getName));
然后就不会错过。使用Streams API,我们通常会自由地应用静态导入,所以
airport.stream().sorted(comparing(Train::getName));
我看到你没有分配流对象而且不应用任何终端操作,所以你应该知道上面的表达式仍然没有对你的数据采取任何行动。您刚刚声明应用终端操作后将对流进行排序。
答案 1 :(得分:4)
使用
// v add ( here
airport.stream().sorted((Train object1 , Train object2) ->
object1.getName().compareTo(object2.getName()));