JAVA排序的思路
遇到有重复数值需要排序号的情况
//先根据排序系数去重后查询集合
//SELECT * FROM tableName A WHERE NOT EXISTS(SELECT 1 FROM tableName WHERE A.排序系数=排序系数AND A.ID>ID);
//例子:SELECT * FROM year_data A WHERE NOT EXISTS(SELECT 1 FROM year_data WHERE A.sort_coefficient=sort_coefficient AND A.ID>ID)
//查询得到一个集合,将集合根据排序系数升序或者降序排列
list.sort(new Comparator<YearData>() {
BigDecimal b1;
BigDecimal b2;
@Override
public int compare(YearData o1, YearData o2) {
b1 = new BigDecimal(o1.getSortCoefficient());
b2 = new BigDecimal(o2.getSortCoefficient());
return Integer.compare(b2.compareTo(b1), 0);
}
});
//循环list给所有对象设置排序号
for (YearData yearData : list) {
yearData.setSort(list.indexOf(yearData) + 1);
//更新与此对象排序系数相同的所有对象
yearDataMapper.updateSortBySortCoefficient(yearData.getSort(),yearData.getSortCoefficient());
System.out.println("sort:"+(list.indexOf(yearData) + 1)+" set over");
}
System.out.println("表中所有数据的排序号更新完成");