2012-12-09 102 views
1

我有一個arrayList的firstName,lastName,地址,電子郵件,phoneNumber和arrayList的多個「條目」,每個與所有5個索引。獲取和設置所有5個值的方法都在Entry類中,而添加,修改,刪除和排序條目在類Contact List中完成。ArrayList的ArrayList ArrayList的內部ArrayList

我想按姓氏排序條目,並在ContactList類中打印出來。我有:

public void listEntries() 
    { 
     Collections.sort(entries); 

     for (int i = 0; i < entries.size(); i++) 
     { 

      entries.get(i).print(); 
     } 
    } 

我知道我錯過了一些東西來定義什麼排序,但我甚至不知道如果我應該使用Collections.sort。有什麼建議麼?

+0

用問題語言(Java?)標記問題是一個好主意,以便觀看該標記的人可以看到它。 – khagler

回答

1

你的類與給定的條目(我認爲,該條目是該類)必須實現Comparable接口。然後你可以使用排序你的收藏。順序由自然順序給出(由您自行定製Comparable接口的實現方法)。

+0

對不起,但我對分類列表集合或實現「可比較接口的方法」不熟悉。我可以很容易地把導入java.util.Comparator;但除此之外,我很無能。我不知道該把它放在什麼位置,或者它應該包含什麼,或者它是重要的課程,還是我可以從中調用的方法。任何額外的線索都會有所幫助。 – user1890156

+0

你有類Entry,它具有屬性名字,姓氏,地址,電子郵件等。你也有一些getters等。實現Comparable接口很簡單。您可以在Entry類中實現要排序的屬性的compareTo方法。例如,您想對lastName上的記錄進行排序,所以方法看起來像「public int compareTo(Object object){if(object instanceof Entry){return lastName.compareTo(((Entry)object).getLastName());}否則......「檢查這種方法的慣例。如果你想排序更多的屬性,你可以使用更多的比較 – Equo

1

您錯過了比較器作爲sort的額外參數 - 例如,

Collections.sort(entries, new Comparator<List<String>>() { 
    @Override 
    public int compare(List<String> o1, List<String> o2) { 
     return o1.get(1).compareTo(o1.get(1)); 
    } 
});