【问题标题】:Error when using Collections.sort() with ArrayList and Class. (JAVA)将 Collections.sort() 与 ArrayList 和 Class 一起使用时出错。 (JAVA)
【发布时间】:2020-01-16 16:38:41
【问题描述】:

我实际上是在尝试使用外部排序来订购 ArrayList(我知道这比这更容易,但我的老师想要这样)。

我有下一个代码:

//MainClass

    public static void main(String[] args) {
        Cotxe coche1 = new Car("Opel","Corsa",200);
        Cotxe coche2 = new Car ("Ferrari","Italia",200);
        Cotxe coche3 = new Car ("Porsche","Cayenne",200);

        ArrayList<Car> list = new ArrayList<Car>();

        list.add(car1);
        list.add(car2);

        Collections.sort(list, new OrderCarByModel());
    }

//COMPARATOR CLASS

public interface Comparator <Car>{
    int compare(Car c1, Car c2);
    boolean equals(Object obj);
}

//ORDERCARBYMODEL CLASS

public class OrderCarByModel implements Comparator<Car> {
    @Override
    public int compare(Car c1, Car c2) {
        return c1.getModel().compareTo(c2.getModel());
    }

//CAR CLASS ONLY HAVE 3 ATTRIBUTES. BRAND, MODEL AND PRICE, IT'S A PRETTY SIMPLE CLASS.

错误出现在“Collections.sort(list, new OrderCarByModel());”中在 MainClass 中。

Sorry for the translation, I just translated the code in the post but not in the error picture, "Cotxe" means "Car" and "OrdenarCocheModelo" means "OrderCarByModel".

【问题讨论】:

    标签: java class sorting arraylist


    【解决方案1】:

    public interface Comparator &lt;Car&gt;{

    您不应该创建自己的名为Comparator 的界面。删除它(和类文件)。 OrderCarByModel 必须实现 java.util.Comparator 才能与 Collections.sort(java.util.List, java.util.Comparator) 一起使用。

    【讨论】:

    • 当我实现 Comparator 时,它不允许我修改函数接收到 Car 的 2 个 Object 类型对象,因此我只能比较 1 个属性 (getModel) 并按字母顺序排列。
    猜你喜欢
    • 2017-04-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-11-13
    • 2011-12-27
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多