Comparator.Comparating在java 8流中没有方法引用时不起作用 List animals=this.service.findAll(); animals=animals.stream().sorted(Comparator.comparing(Animal::getName)).collect(Collectors.toList()); //工作
当Comparator.Comparating在java 8流中没有方法引用时不起作用 List animals=this.service.findAll(); animals=animals.stream().sorted(Comparator.comparing(Animal::getName)).collect(Collectors.toList()); //工作,java,java-8,stream,comparator,Java,Java 8,Stream,Comparator,当 List<Animal> animals = this.service.findAll(); animals = animals.stream().sorted(Comparator.comparing(Animal::getName)).collect(Collectors.toList()); //working List animals=this.service.findAll(); animals=animals.stream().sorted(Comparator
List<Animal> animals = this.service.findAll();
animals = animals.stream().sorted(Comparator.comparing(Animal::getName)).collect(Collectors.toList());
//working
List animals=this.service.findAll();
animals=animals.stream().sorted(Comparator.comparing(Animal.getName()).collect(Collectors.toList());
//不工作。。
有人能告诉我为什么我不能在没有方法引用的情况下使用comparator comparing吗?除非
getName()
是静态方法,否则它可能不会编译
如果您不想使用方法引用(它不是syntitaticsugar),那么使用lambda也应该可以
List<Animal> animals = this.service.findAll();
animals = animals.stream().sorted(Comparator.comparing(Animal.getName()).collect(Collectors.toList());
//Not working..
接受从类型T中提取可比较排序键的函数,
并返回一个比较器,该比较器通过该排序键进行比较
Animal::getName
提供方法引用,而Animal.getName()
提供一个字符串
(可能)
参考:
寻求调试帮助的问题(“为什么此代码不起作用?”)必须包括所需的行为、特定的问题或错误,以及在问题本身中重现这些问题所需的最短代码。没有明确问题说明的问题对其他读者没有用处。请参阅:如何创建问题,如果对您有效,请将此标记为答案谢谢
animals.stream().sorted(Comparator.comparing(a -> a.getName()).collect(Collectors.toList());