用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