我的目標(biāo)是對(duì)人員列表進(jìn)行排序。我正在使用 Comparator 接口的比較方法。我創(chuàng)建了三個(gè)類。即Person.java,?AgeComparator.java,?SortingExample.java.Person 類是一個(gè)簡(jiǎn)單的類,有兩個(gè)字段(姓名、年齡),也有 getters。然后在我的 AgeComaparator 類中,我實(shí)現(xiàn)了 Comparator 接口并將 Person 類作為 Type 參數(shù)傳遞。然后重寫(xiě)來(lái)自 Comparator 接口的比較方法。因此,為了執(zhí)行此應(yīng)用程序,在我的 SortingExample 中,我創(chuàng)建了 3 個(gè) Person 類型的對(duì)象。然后將這些對(duì)象添加到 Person 類型的 ArrayList 中。然后調(diào)用帶有兩個(gè)參數(shù)的 Collections.sort() 方法。這些是列表對(duì)象和實(shí)現(xiàn) Comparator 接口的類。Person.javapackage 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 + "]";? ? }}我正在為該應(yīng)用程序使用 Eclipse IDE,并且在sort方法。錯(cuò)誤如下所示,“集合類型中的方法 sort(List, Comparator) 不適用于參數(shù) (List, AgeComparator)”我在這里做錯(cuò)了什么?任何幫助將非常感激。謝謝
1 回答

拉莫斯之舞
TA貢獻(xiàn)1820條經(jīng)驗(yàn) 獲得超10個(gè)贊
Person類位于com.nadee.module3 , AgeComparator類用于此類 Person
但在SortingExample類中,您使用的是com.nadee.collections .Person 中的 Person。應(yīng)該完全不行。您的代碼的另一點(diǎn):
請(qǐng)使用
actors.sort(new AgeComparator());
,Collections.sort
太常見(jiàn)了
添加回答
舉報(bào)
0/150
提交
取消