java - 使用 Comparable 对 ArrayList 进行排序

标签 java sorting arraylist

我正在开发一个项目,我需要能够按价格对 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/

相关文章:

java - 禁用 JavaDocs 的注解

algorithm - 对字符串进行就地排序以查明是否存在非唯一字符

javascript - Laravel:如何使用分页和过滤器按相关模型进行排序

list - 如何在vim中随机播放列表?

java - 字符串索引超出范围 : 0

java - 使用用户输入将对象添加到 ArrayList 的方法

java - 交替 PipedOutputStream PipedInputStream Numbers 示例

java - 现代 Swing 部署和 JVM 约会

Java - 使用静态方法中的实例类?

java - 在 Java 中修改 ArrayList