在我的taks中,我需要用lambda对名字进行排序。lambdacomparator扩展了class car。
我让lambdacomparator类如下:
public class LambdaComparator extends Car
public LambdaComparator(String name) {super(name);}
在这个类中,我需要对car类型的对象进行排序。
在main类中,我有一个对象列表,我需要用函数对它进行排序。
在lambdacomparator的课堂上,我有一个:
Collections.sort(list, new Comparator<Car>() {
public int compare(Car x, Car y) {
return x.getName().compareTo(y.getName()));
}
});
我应该如何在main中调用函数来对其进行排序,我应该如何在类中使void类型的函数以某种方式调用它。
编辑:lambda表达式
class LambdaSort<T extends Car>
private List<T> listOfCars;
public LambdaComparator(){
this.listOfCars = new ArrayList<T>();
}
public void sortCars(T cars)
listOfCars.sort((Car o1, Car o2)->o1.getName().compareTo(o2.getName());
在main函数中,我将car类型的对象添加到该列表中。
2条答案
按热度按时间zf2sa74q1#
lambda比较器应该是这样的。
在上面的例子中,比较器在一个特定的字段上进行比较
Car
班级,name
. 因为name可能返回一个字符串,所以可以使用compareTo
因为string类实现了Comparable
(不是Comparator
)用于比较字符串的接口。但是使用比较器接口中的一种方法可以更容易地指定lambda。这个
comparing
方法可以采用lambda或方法引用(如下所示)。然后,当它被传递给sort方法时,sort方法将把它应用于sort as下的对象
comp.compare(obj1, obj2)
(尽管它可能不被称为comp
在使用它的方法中)有关更多信息,请查看java教程
ssm49v7z2#
看看兰姆达在这里是什么。
如果你的主类中有一个列表,那么只需对它进行排序就可以了。你甚至不需要上课
LambdaComparator
.