這可能是題外話,但如果你想嘗試一些很酷的東西,在JDK 8 Lambda Preview提供了一些很酷的方法來使用Lamda expressions and method references定義比較器。
比方說,我們有一個類:
class Jedi {
private final String name;
private final int age;
//...
}
,然後將它們的集合:
List<Jedi> jediAcademy = asList(new Jedi("Obiwan",80), new Jedi("Anakin", 30));
sort(jediAcademy, (j1, j2) -> j1.getAge() > j2.getAge() ? 1 : j1.getAge() < j2.getAge() ? -1 : 0);
System.out.println(jediAcademy); //Anakin, Obiwan
或者與方法的引用,假設絕地有表現爲比較器(相同的簽名)方法
class Jedi {
public static int compareByAge(Jedi first, Jedi second){
return first.age > second.age ? 1 : first.age < second.age ? -1 : 0;
}
//...
}
可以如下使用它們來使用方法生成比較器: d參考:
List<Jedi> jediAcademy = asList(new Jedi("Obiwan",80), new Jedi("Anakin", 30));
sort(jediAcademy, Jedi::compareByAge);
System.out.println(jediAcademy);//Anakin, Obiwan
這是功課? – 2012-04-04 17:46:31
作業分配(到幾周前)是要學習如何對mergesort進行硬編碼以對100個整數列表進行排序。我只是想了解當我開始處理更大的項目時Java工具的侷限性。 – MattDavBen 2012-04-04 17:48:12