• java中如何使用字段对对象数组进行排序


    1.实现Comparator进行排序

    创建需要排序对象

    1. /**
    2. * @author wangli
    3. * @create 2022-08-17 17:17
    4. */
    5. @Data
    6. public class TotalNumDto {
    7. @ApiModelProperty("工单总量")
    8. private Integer workNum;
    9. @ApiModelProperty("同比数")
    10. private Integer yoyNum;
    11. @ApiModelProperty("环比数")
    12. private Integer qoqNum;
    13. }

    实现Comparator的compare方式实现排序

    1. @Test
    2. public void test2(){
    3. List totalNumDtoList = new ArrayList<>();
    4. for (int i = 0; i < 3; i++) {
    5. TotalNumDto totalNumDto = new TotalNumDto();
    6. totalNumDto.setWorkNum(i*2+1);
    7. totalNumDtoList.add(totalNumDto);
    8. }
    9. System.out.println("排序前 = " + totalNumDtoList);
    10. Collections.sort(totalNumDtoList, new Comparator() {
    11. @Override
    12. public int compare(TotalNumDto o1, TotalNumDto o2) {
    13. //顺序
    14. //return o1.getWorkNum()-o2.getWorkNum();
    15. //逆序
    16. return o2.getWorkNum()-o1.getWorkNum();
    17. }
    18. });
    19. System.out.println("排序后 = " + totalNumDtoList);
    20. }

    打印结果如下

    排序前 = [

    TotalNumDto(workNum=1, yoyNum=null, qoqNum=null),

    TotalNumDto(workNum=3, yoyNum=null, qoqNum=null),

    TotalNumDto(workNum=5, yoyNum=null, qoqNum=null)]
    排序后 = [

    TotalNumDto(workNum=5, yoyNum=null, qoqNum=null),

    TotalNumDto(workNum=3, yoyNum=null, qoqNum=null),

    TotalNumDto(workNum=1, yoyNum=null, qoqNum=null)]

    比较它的两个参数的顺序。返回负整数、零或正整数,因为第一个参数小于、等于或大于第二个

    当compare方法返回1时需要交换这两个数的位置,通过算法循环从而达到不断交换位

  • 相关阅读:
    Python调用c++生成的dll
    【引语练习题】直接引语为疑问句转为间接引语时注意
    [C++](20)红黑树,调整规则图解,插入功能代码实现
    Filter过滤器
    基础课10——人工智能的基础:大数据
    NodeJS技巧:在循环中管理异步函数的执行次数
    Java之BigDecima容器学习心得
    jwt如何使用
    UE基础篇五:动画
    DDD概念理解
  • 原文地址:https://blog.csdn.net/wang20010104/article/details/126390346