2017-03-16 55 views
0

我有一個使用ArrayList的List []實現的鄰接列表。我想按照ArrayLists大小的降序對List進行排序。我想我會通過編寫一個比較器來做到這一點...但是,我會如何做到這一點?或者這是不可能的,我應該以另一種方式做到這一點?如何對ArrayList列表(不是數組)進行排序?

Collections.sort(adjacency, new Comparator<ArrayList<Integer>()>() { 
    public int compare(ArrayList<Integer> p1, ArrayList<Integer> p2) { 
     return Integer.compare(p1.length, p2.length); 
    } 
}); 

頂部的代碼無法正常工作。我試着用一個ArrayList,List [],List作爲比較器類型。有沒有一個包裝類的列表?對不起,如果這聽起來可能沒有教養。

這是我如何使鄰接表:

List<Integer>[] adjacency; 
adjacency = (List<Integer>[]) new List[size]; 
for (int i = 0; i < size; ++i) { 
    adjacency[i] = new ArrayList<Integer>(); 
} 

謝謝。

+1

不應'p1.length'爲'p1.size()'?所以你有一個'ArrayList'數組,你試圖使用'Collections.sort'對數組進行排序...? – MadProgrammer

回答

2

頂部的代碼無法正常工作。

的代碼不工作,因爲P1和P2的ArrayList和他們沒有一個字段中指定的長度,他們有方法size(),這是你所需要的。

return Integer.compare(p1.size(), p2.size()); 
+2

在回答這個問題之前,我會非常小心,並且仔細查看他們如何創建'adjacency';) – MadProgrammer