使用自定义的比较器
List<SalesData> list = programHomeService.getSalesDate(transactionRecord);
for (SalesData salesData:list) {
if (salesData.getTotalPriceSum()==null){
salesData.setOilQuantitySum(new BigDecimal(0));
salesData.setTotalPriceSum(new BigDecimal(0));
}
}
// 使用自定义的比较器进行排序
Collections.sort(list, new Comparator<SalesData>() {
@Override
public int compare(SalesData salesData1, SalesData salesData2) {
// 根据totalPriceSum属性从大到小排序
return salesData2.getTotalPriceSum().compareTo(salesData1.getTotalPriceSum());
}
});
return getDataTable(list);
这里比较的是BigDecimal类型 后面的调用比较方法以后面的为准,后面的比前面的大就把后面的放到前面来,从大到小排序
如果比较String类型会根据
import java.util.Collections;
import java.util.Comparator;
import java.util.List;
public class Main {
public static void main(String[] args) {
List<Item> itemList = ...; // 假设你的列表名为itemList
// 使用自定义的比较器进行排序
Collections.sort(itemList, new Comparator<Item>() {
@Override
public int compare(Item item1, Item item2) {
// 根据totalPriceSum属性从大到小排序
return Integer.compare(item2.getTotalPriceSum(), item1.getTotalPriceSum());
}
});
// 排序后的列表
for (Item item : itemList) {
System.out.println(item);
}
}
}
class Item {
private int totalPriceSum;
public int getTotalPriceSum() {
return totalPriceSum;
}
// 其他属性和方法...
@Override
public String toString() {
return "Item{" +
"totalPriceSum=" + totalPriceSum +
// 其他属性...
'}';
}
}
int类型进行排序
steam排序
自然排序:
List<Integer> list = Arrays.asList(3,2,1,4,5);
list.stream().sorted().forEach(System.out::print); // 1 2 3 4 5
sorted(Comparator)方法需要传入一个Comparator对象,该对象定义了元素的排序规则。例如按照元素大小降序排列:
List<Integer> list = Arrays.asList(3,2,1,4,5);
list.stream().sorted((x, y) -> y - x).forEach(System.out::print); // 5 4 3 2 1
steam方法详解:Java Stream排序用法 - Java教程网