Collections.sort() 方法未正确选择重载方法

我的目标是对人员列表进行排序。我正在使用 Comparator 接口的比较方法。

我创建了三个类。即

Person.java, AgeComparator.java, SortingExample.java

.

Person 类是一个简单的类,有两个字段(姓名、年龄),也有 getters。然后在我的 AgeComaparator 类中,我实现了 Comparator 接口并将 Person 类作为 Type 参数传递。

然后重写来自 Comparator 接口的比较方法。

因此,为了执行此应用程序,在我的 SortingExample 中,我创建了 3 个 Person 类型的对象。然后将这些对象添加到 Person 类型的 ArrayList 中。

然后调用带有两个参数的 Collections.sort() 方法。这些是列表对象和实现 Comparator 接口的类。

Person.java

package com.nadee.module3;


import java.util.Objects;


public class Person {


    private final String name;

    private final int age;


    public Person(String name, int age) {

        Objects.requireNonNull(name);

        this.name = name;

        this.age = age;

    }



    public String getName() {

        return name;

    }

    public int getAge() {

        return age;

    }



    @Override

    public int hashCode() {

        final int prime = 31;

        int result = 1;

        result = prime * result + age;

        result = prime * result + ((name == null) ? 0 : name.hashCode());

        return result;

    }



    @Override

    public boolean equals(Object obj) {

        if (this == obj)

            return true;

        if (obj == null)

            return false;

        if (getClass() != obj.getClass())

            return false;

        Person other = (Person) obj;

        if (age != other.age)

            return false;

        if (name == null) {

            if (other.name != null)

                return false;

        } else if (!name.equals(other.name))

            return false;

        return true;

    }



    @Override

    public String toString() {

        return "Person [name=" + name + ", age=" + age + "]";

    }

}

我正在为该应用程序使用 Eclipse IDE,并且在

sort

方法。


错误如下所示,

“集合类型中的方法 sort(List, Comparator) 不适用于参数 (List, AgeComparator)”

我在这里做错了什么?任何帮助将非常感激。

谢谢


蓝山帝景
浏览 98回答 1
1回答

拉莫斯之舞

Person类位于com.nadee.module3 , AgeComparator类用于此类 Person但在SortingExample类中,您使用的是com.nadee.collections .Person 中的 Person。应该完全不行。您的代码的另一点:请使用actors.sort(new AgeComparator());,Collections.sort太常见了
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Java