用java分揀機,即:Java集合排序VS自定義排序 - 速度
Collections.sort(myArrayList, new Comparator<Integer>() {
@Override
public int compare(Integer o1, Integer o2) {
return x;
}
});
和
myArrayList.sort(new Comparator<Integer>() {
@Override
public int compare(Integer o1, Integer o2) {
return x;
}
});
周圍有 '出' 的標籤表明,該方法需要600-800毫秒內完成。 100陣列 -
此排序50時,僅僅是太大的延遲。
我的問題是,將創建自定義的方法排序數組是任何更快?
上面的代碼工作得很好,但僅僅是方法來實現速度太慢......
每個陣列(myArrayList)有大約44元。
需要600-800毫秒才能完成1次排序,因此50-100個陣列最多可能需要80000毫秒。
可執行文件:
System.out(timeMillis);
Collections.sort(fourtyFourItemsArrayL, new Comparator<Integer>() {
@Override
public int compare(Integer o1, Integer o2) {
Item i1 = o1 >= 16 ? player.getInventory().getItem(o1 - 16) : player.getEquipment().getItem(o1 - 1);
Item i2 = o2 >= 16 ? player.getInventory().getItem(o2 - 16) : player.getEquipment().getItem(o2 - 1);
int price1 = i1 == null ? 0 : i1.getDefinitions().getProtectionPrice();
int price2 = i2 == null ? 0 : i2.getDefinitions().getProtectionPrice();
if (price1 > price2)
return -1;
else if (price1 < price2)
return 1;
return 0;
}
});
System.out(timeMillis);
這將取決於。你需要對自己的數組進行排序嗎?或者根據它們的元素對數組進行排序(通過元素的某些屬性比較數組) – ItamarG3
這些不是「數組」,而是「列表」。你的意思是50-100個列表或列表中的50-100個元素?請提供更完整的示例。 – davidxxx
在潛入這個兔子洞之前,請確保您有數據支持它。在Java中測量性能是非常困難的。看看http://openjdk.java.net/projects/code-tools/jmh/ – Buhb