我正在开发一个项目,我需要能够按价格对 Car 对象的 ArrayList 进行排序。在我的汽车课上,我有
public class Car implements Comparable
代码主体中是compareTo方法:
public int compareTo(Object o)
{
Car rhs = (Car)o;
if (price > rhs.price)
return 1;
else if (price < rhs.price)
return -1;
else
return 0;
}
我只是不明白如何实现这种按价格排序的方法 - carList 需要与什么进行比较?我知道这是不正确的,但到目前为止这是排序方法。
public void sortByPrice()
{
Collections.sort(carList.compareTo(o));
}
最佳答案
两个问题:一个是句法问题,一个是概念问题。
第一个问题是,虽然您的 compareTo
在技术上是正确的,但您希望将其类型绑定(bind)到 Car
而不是 对象
。
public class Car implements Comparable<Car>
在 compareTo
方法中,您可以用 Object
替换 Car
。您还需要检查 null
。
第二个是 sortByPrice
听起来很具体,但由于 compareTo
是根据价格进行比较,所以这还可以。
您需要做的就是在实际集合上调用Collections.sort
:
Collections.sort(carList);
关于java - 使用 Comparable 对 ArrayList 进行排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28486045/