我想開發汽車列表的排序演示。我正在使用數據表來顯示汽車列表。現在實際上我想按汽車顏色對列表進行排序。這裏不按字母順序排序。我想使用我的自定義排序順序,如紅色汽車先來,然後藍色等。使用比較器進行自定義排序
爲此,我嘗試使用Java比較和可比較,但它只允許按字母順序排序。
那麼,任何人都可以指導我實現使用該技術的方式,以便排序變得更快。
import java.util.ArrayList;
import java.util.Comparator;
import java.util.List;
public class CarSort implements Comparable<CarSort>{
String name;
String color;
public CarSort(String name, String color){
this.name = name;
this.color = color;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getColor() {
return color;
}
public void setColor(String color) {
this.color = color;
}
//Implement the natural order for this class
public int compareTo(CarSort c)
{
return getName().compareTo(c.getName());
}
static class ColorComparator implements Comparator<CarSort>
{
public int compare(CarSort c1, CarSort c2)
{
String a1 = c1.getColor();
String a2 = c2.getColor();
return a1.compareTo(a2);
}
}
public static void main(String[] args)
{
List<CarSort> carList = new ArrayList<CarSort>();
List<String> sortOrder = new ArrayList<String>();
carList.add(new CarSort("Ford Figo","Silver"));
carList.add(new CarSort("Santro","Blue"));
carList.add(new CarSort("Honda Jazz","Magenta"));
carList.add(new CarSort("Indigo V2","Red"));
sortOrder.add("Red");
sortOrder.add("Magenta");
sortOrder.add("Blue");
sortOrder.add("Silver");
// Now here I am confuse how to implement my custom sort
}
}
如何將我運行此example.PaintColors在ColorComparator.could不訪問您說明了如何的主要方法會是什麼樣子。 – Deepak 2011-03-09 11:42:43
輸出是什麼?它總是首先是銀色的? – Deepak 2011-03-09 11:49:51
@Deepak:是的,enum值的自然順序是其值的定義順序。 – 2011-03-09 12:17:42