开发经验:List按某种优先级排序

https://blog.youkuaiyun.com/qq_38929156/article/details/85275138

一、问题说明
在做一个油田系统时遇到的需要根据优先级排序的问题
现有一个预算单的集合list,要根据历史单据做新的预算单据,但在做之前要查到之前的单据进行修改另存为新的单据,查询的过程是根据预算单的几个参数进行优先级排序查询,以便查询到最符合现在要求的历史单据作为修改模板。
预算单据实体:如下

二、解决思路
1、引入优先级分数的概念:
预算实体中添加score字段:
根据优先级进行分数配置:
workType:1
wellCasing:2
wellType:4
wellArea:8
wellDiff:16
每个优先级的配分是所有相对低优先级的配分之和再加1,这样保证了高优先级字段符合查询条件时一定会比低优先级符合条件时的配分更高。
然后再根据配分排序。list的排序利用实体类实现Comparable接口来实现。

三、排序代码块
1、实体
继承接口

引入分数字段,不必存数据库

实现比较方法
分数降序排列:

分数升序排列:

2、排序

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值