2015-04-23 21 views
2

這裏的排序是什麼,我試圖做一個例子:Java數組由類

public class Item { 
    private int worth; 

    public Item(int worth) { 
     this.worth = worth; 
    } 

    public int getWorth() { return worth; } 
} 

public class Foo { 
    public Foo() { 
     List<Item> items = new ArrayList<>(); 
     items.add(new Item(50)); 
     items.add(new Item(892)); 
     items.add(new Item(12)); 
     // Sort? 
    } 
} 

因此,該項目將被勒令像這樣

List{ 
    Item(892) 
    Item(50) 
    Item(12) 
} 

不是很確定,我應該去從這裏開始,Arrays.sort()方法將會很棒,如果我能夠弄清楚如何用類內的整數對它進行排序。

回答

4

您可以創建自己的類來實現Comparator<Item>。您需要定義的唯一方法是the compare method,它比較了2 Item。它將返回一個負數,0或正數,具體取決於第一項是小於,等於還是大於第二項。

在這種情況下,按降序排序,當第一個項目小於第二個項目時返回一個正數,而當第一個項目大於第二個項目時,返回一個負數。這將創建一個降序。

Arrays.sort適用於數組,但Collections.sort對集合做同樣的事情(無論如何它都使用Arrays.sort)。這兩種方法只需要從調用者那裏知道如何比較項目,以便它可以正確地對它們進行分類。

Comparator的實例傳遞給Collections.sort的調用,它將爲您排序列表。

+0

感謝更改富構造。這些鏈接使這個非常簡單。 – Hobbyist

0

如下

public Foo() { 
    List<Item> items = new ArrayList<>(); 
    items.add(new Item(50)); 
    items.add(new Item(892)); 
    items.add(new Item(12)); 
    Collections.sort(items, new Comparator<Item>() { 

     public int compare(Item o1, Item o2) { 

      return Integer.valueOf(o1.getWorth()).compareTo(Integer.valueOf(o2.getWorth())); 
    } 
    }); 
}