通过Comparable实现排序功能

@Data
public class ConsultantWorkloadInfoVO implements Comparable<ConsultantWorkloadInfoVO> {

	/**
	 * 用户id
	 */
	private Long id;

	/**
	 * 用户真实姓名
	 */
	private String realName;

	/**
	 * 已完成咨询小时数  个体咨询预约状态=已完成
	 */
	private String completeSum;

	/**
	 * 未来两周咨询小时数 个体咨询预约状态=未开始
	 */
	private String appointSum;

	/**
	 * 真实姓名拼音
	 */
	private String pinyin;

	/**
	 * 排序
	 * 1、先根据已完成咨询小时数排序
	 * 2、若相等再根据未来两周咨询小时数排序
	 * 3、若相等再根据用户真实姓名排序
	 *
	 * @param o 比较值
	 * @return 大小
	 */
	@Override
	public int compareTo(ConsultantWorkloadInfoVO o) {
		return new BigDecimal(completeSum).compareTo(new BigDecimal(o.getCompleteSum())) > 0 ? 1 :
				(new BigDecimal(completeSum).compareTo(new BigDecimal(o.getCompleteSum())) < 0 ? -1 :
						(new BigDecimal(appointSum).compareTo(new BigDecimal(o.getAppointSum())) > 0 ? 1 :
								(new BigDecimal(appointSum).compareTo(new BigDecimal(o.getAppointSum())) < 0 ? -1 :
										pinyin.compareTo(o.getPinyin())
								)));
	}
}

放到treeSet返回

		TreeSet<ConsultantWorkloadInfoVO> treeSet = new TreeSet<>();
		for (Map.Entry<Long, UserVO> entry : userMap.entrySet()) {
			Long userId = entry.getKey();
			UserVO userVO = entry.getValue();
			ConsultantWorkloadInfoVO vo = new ConsultantWorkloadInfoVO();
			vo.setId(userId);
			vo.setRealName(userVO.getRealName());
			vo.setPinyin(ChineseCharacterUtil.getUpperCase(userVO.getRealName(), true));
			vo.setAppointSum(df.format(appointMap.getOrDefault(userId, BigDecimal.ZERO)));
			vo.setCompleteSum(df.format(completeMap.getOrDefault(userId, BigDecimal.ZERO)));
			treeSet.add(vo);
		}
		return new ArrayList<>(treeSet);
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值