适用于各种数据结构的万能排序方法

最近在工作过程中经常碰到需要排序的场景,但是由于数据格式不是List集合,也无法转为List,因此写了一个适用于非List数据结构下的排序方法,代码如下:

//排序
        class ModelObjectComparator implements Comparator<ModelObject> {
            private String propertyName; // 要比较的属性名称

            public ModelObjectComparator(String propertyName) {
                this.propertyName = propertyName;
            }
            @Override
            public int compare(ModelObject o1, ModelObject o2) {
                // 定义日期格式
                DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");
                // 获取 o1 和 o2 的 g3Date 属性值
                String dateStr1 = null;
                String dateStr2 = null;
                try {
                    dateStr1 = o1.getPropertyDisplayableValue(propertyName);
                    dateStr2 = o2.getPropertyDisplayableValue(propertyName);
                } catch (NotLoadedException e) {
                    throw new RuntimeException(e);
                }
                // 进行适当的比较逻辑
                try {
                    LocalDateTime dateTime1 = LocalDateTime.parse(dateStr1, formatter);
                    LocalDateTime dateTime2 = LocalDateTime.parse(dateStr2, formatter);
                    return dateTime1.compareTo(dateTime2);
                } catch (DateTimeParseException e) {
                    // 处理无法转换为日期格式的情况,根据需要处理
                    return 0; // 或者抛出异常
                }
            }
        }
        //调用方法参数1:待排序数据列表,参数2:参数列表中的参数
        Arrays.sort(changeForms, new ModelObjectComparator("g3_Date"));

 //调用方法参数1:待排序数据列表,参数2:参数列表中的参数
        Arrays.sort(changeForms, new ModelObjectComparator("g3_Date"));

调用方法如上,示例代码排序索引为日期时间,大家也可根据自己的需求进行修改。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值