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

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