簡體   English   中英

Java ArrayList集合排序

[英]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. 
   }
}

您在ListArrayList中的類類型必須實現comparable的接口,並正確覆蓋compareTo(...)方法,

您是否違反此合同並且不實現該接口。 類集合沒有有效的標准/規則來對列表進行比較/排序,因此您的編譯器會抱怨...

我不認為這是ArrayList。 例如:

ArrayList<String> names = new ArrayList<>();
...
Collections.sort(names);

效果很好。 列表的內容必須具有可比性,這樣排序才能起作用。 在這種情況下,Time類和任何子類型必須實現Comparable。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM