我使用Collections.sort 对List 集合中的对象进行排序
disList 是这种类型 List<Object[]>
Object[]数组里面第一个元素放的是一个double类型的数据,第二个里面放的是一个对象,public static void sortDisList(List<Object[]> disList){
//从小到大排序
Collections.sort(disList,new Comparator() {
public int compare(Object a, Object b) {
Object[] o1 = (Object[]) a;
Object[] o2= (Object[]) b;
if(Double.parseDouble(o1[0].toString()) >= Double.parseDouble(o2[0].toString())){
return 1;
}
else {
return -1;
}
}
});
}
//从小到大排序
sortDisList(disList);//在这里调用发现4万条数据需要消耗20秒,请教高手有没有优化方案?
disList 是这种类型 List<Object[]>
Object[]数组里面第一个元素放的是一个double类型的数据,第二个里面放的是一个对象,public static void sortDisList(List<Object[]> disList){
//从小到大排序
Collections.sort(disList,new Comparator() {
public int compare(Object a, Object b) {
Object[] o1 = (Object[]) a;
Object[] o2= (Object[]) b;
if(Double.parseDouble(o1[0].toString()) >= Double.parseDouble(o2[0].toString())){
return 1;
}
else {
return -1;
}
}
});
}
//从小到大排序
sortDisList(disList);//在这里调用发现4万条数据需要消耗20秒,请教高手有没有优化方案?
为啥不直接传进来两个double,这样就不用反复调用parseDouble和toString方法了
Object[] o2= (Object[]) b;
同样道理,不考虑null
double d1 = (double) o1[0];
double d2 = (double) o2[0];
return d1 - d2;
return 1;
}
else {
return -1;
}因为往数组里面放的时候就是Double 所以直接转换,而不需要
Double.parseDouble(o1[0].toString())
Object[] o1 = (Object[]) a;
Object[] o2 = (Object[]) b;
double d1 = (Double) o1[0];
double d2 = (Double) o2[0];
return (int)(d1 - d2);
}