我尝试使用lambda表达式根据JDK1.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()));发布于 2015-02-03 14:50:02
你错过了一辆帕伦:
airport.stream().sorted(Train object1 , Train object2) -> object1.getName().compareTo(object2.getName()));
^--here但是,建议您使用更简洁的语法:
airport.stream().sorted(Comparator.comparing(Train::getName));那么就没有父母可以错过了。通过使用Streams,我们通常可以自由地应用静态导入,因此
airport.stream().sorted(comparing(Train::getName));我看到您没有分配流对象,也没有应用任何终端操作,所以您应该知道上面的表达式仍然没有对您的数据采取任何行动。您刚刚声明,一旦应用了终端操作,流将被排序。
发布于 2015-02-03 14:48:34
使用
// v add ( here
airport.stream().sorted((Train object1 , Train object2) ->
object1.getName().compareTo(object2.getName()));https://stackoverflow.com/questions/28301710
复制相似问题