实体类list排序

工具类EntityListSort

/**
 * @program: YeeGuideServer
 * @description: list对象排序
 * @author: jiahao
 * @create: 2019-08-06 17:05
 **/
public class EntityListSort {

    /**
     * @param list :  list对象
     * @param variable :  排序字段
     * @description 返回负数表示:variable1 小于 variable2,
     *              返回0 表示:variable1 等于 variable2,
     *              返回正数表示:variable1 大于 variable2,
     * @author  jia hao 
     * @Date  2019/8/6 19:02
     */ 
    public static <T> void sort(List<T> list, String variable) {
        GenericsUtils genericsUtils = new GenericsUtils();
        Collections.sort(list, (vo1, vo2) -> {
            final Integer variable1 = Integer.valueOf(genericsUtils.getVariable(vo1, variable));
            final Integer variable2 = Integer.valueOf(genericsUtils.getVariable(vo2, variable));
            if (variable1 > variable2) {
                return 1;
            }
            if (variable1.equals(variable2)) {
                return 0;
            }
            return -1;
        });
    }
}

这里涉及到另外一个工具类, 泛型反射工具类

//泛型反射,获取变量值
final Integer variable1 = Integer.valueOf(genericsUtils.getVariable(vo1, variable));
final Integer variable2 = Integer.valueOf(genericsUtils.getVariable(vo2, variable));

获取泛型变量 工具类

实体类ExcelTraceVO

@Builder
@AllArgsConstructor
@NoArgsConstructor
@Data
public class ExcelTraceVO {
    /**
     * 经度
     */
    private Double lon;

    /**
     * 纬度
     */
    private Double lat;

    /**
     * 排序
     */
    private Integer sort;
}

测试类

public static void main(String[] args) {
        List<ExcelTraceVO> voList = new ArrayList<>();
        for (int i = 1; i < 10; i++) {
            DecimalFormat df = new DecimalFormat( "0.0000" );
            final ExcelTraceVO build = ExcelTraceVO.builder()
                    .lon(Double.valueOf(df.format(Math.random()*100)))
                    .lat(Double.valueOf(df.format(Math.random()*100)))
                    .sort((int) (Math.random() * 10 + 1))
                    .build();
            voList.add(build);
        }
        System.out.println(voList);
        EntityListSort.sort(voList, "sort");
        System.out.println(voList);
    }

结果

未执行排序方法前
未执行排序方法前

执行排序方法后
执行排序方法后

  • 2
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值