2013-10-19 29 views
-3
ArrayList中

我不知道該怎麼辦的排序與ArrayList中,我有一個醫學史上的ArrayList整理日期的樣本代碼:排序在Java中

........ 
    private List<MedicalHistory> sortByDate(List<MedicalHistory> data) { 
    for (int i = 0; i < data.size(); i++) { 
     for (int j = i; j < data.size(); j++) { 
      if (data.get(i).getDate().compareTo(data.get(j).getDate()) > 0) { 
       MedicalHistory m = data.get(j); 
       data.set(j , data.get(i)); 
       data.set(i, m); 
       ....... 

所以首先,我不知道j的意思是什麼,其次,最後一個data.set代表什麼?任何人都可以解釋其邏輯流程?謝謝!

+0

你有Arrays.sort(變量在這裏)方法或使用自定義對象的比較器 –

+0

看起來像一個有點狡猾的泡沫排序,它具有平均情況二次複雜性(即它不是很好)。最後一個'data.set'將第i個項目設置爲第j個項目的前一個值(在覆蓋它之前)。見例如http://en.wikipedia.org/wiki/Bubble_sort –

回答

-1

是什麼意思Ĵ

j是一個迭代器 - 它可以幫助你 「知道」 哪些元素是被 處理在這一刻。

最後data.set代表什麼意思?

data.set()是新的值設置爲data ArrayList中,在特定的位置 - 所以它會按照排序順序保存信息。
3行:

MedicalHistory m = data.get(j); 
    data.set(j , data.get(i)); 
    data.set(i, m); 

基本上與數據交換ArrayList中的數據在索引i在索引j


作爲一個側面說明,您可以使用Collections.sort()排序的ArrayList

+0

謝謝阿米特,它是否與Array中的排序有相同的概念? –

+0

@peiwang是的,排序數組也可以以非常相似的方式完成。請注意,這種排序方式效率不高,還有更好的排序算法,如[Quick Sort](http://en.wikipedia.org/wiki/Quicksort) – amit

+0

,所以如果我對array或arraylist進行排序,最好使用array。 sort()和collections.sort(),對嗎? –

0

可以使用Collections.sort(數據)進行排序..

+0

這不回答這個問題。 – amit