[英]Java ArrayList Collections sort
我已經看到了一些有關Java出錯的集合排序的問題。 我顯示的錯誤是這樣的:
類型
Collections
的方法sort(List<T>)
不適用於參數(ArrayList<Time>
)
我已經導入了java.util.Collections和ArrayList。 我還導入了我要打電話的課程。 這是我的代碼:
在從中調用的類中:
private ArrayList<Time> times;
...
public ArrayList<Time> getTimes() {
return this.times;
}
在類中,我將數組列表調用為:
public class TimeTUI {
private Scanner scan;
private TimeManager timeManager;
...
private ArrayList<Time> getSortedTimes() {
ArrayList<Time> sortedTimes = this.timeManager.getTimes();
Collections.sort(sortedTimes);
return sortedTimes;
}
錯誤顯示在顯示以下內容的行上:
Collections.sort(sortedTimes);
時間類必須是可比較的。
Collections.sort(List)期望類T實現Comparable接口。 如果您使用了許多內置類,則不會發現問題,但是對於自定義類,sort不知道如何對其進行排序。 因此,通過實現Comparable接口,可以為方法compareTo定義。
public class Time implements Comparable {
public int compareTo(Object o) {
// provide your logic of how to sort Time objects.
}
}
您在List
或ArrayList
中的類類型必須實現comparable
的接口,並正確覆蓋compareTo(...)
方法,
您是否違反此合同並且不實現該接口。 類集合沒有有效的標准/規則來對列表進行比較/排序,因此您的編譯器會抱怨...
我不認為這是ArrayList。 例如:
ArrayList<String> names = new ArrayList<>();
...
Collections.sort(names);
效果很好。 列表的內容必須具有可比性,這樣排序才能起作用。 在這種情況下,Time類和任何子類型必須實現Comparable。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.