java linq多字段排序时间比较

java 复制代码
    public static void main(String[] args) {
        //100万条数据
        List<CrmInvestSaleUserCount> waitAssignUserList = new ArrayList<>();
        for (int i = 0; i < 1000000; i++) {
            waitAssignUserList.add(new CrmInvestSaleUserCount().setSales_username("test" + i).setCount(
                            BigDecimal.valueOf(RandomUtils.nextDouble(0.00, 9.99)))
                    .setWeight(BigDecimal.valueOf(RandomUtils.nextInt(1, 50))));
        }

        //第一种方式 count升序/weight降序
        long startTime = System.currentTimeMillis();
        CrmInvestSaleUserCount saleUserCount = Linq.of(waitAssignUserList).orderBy(CrmInvestSaleUserCount::getCount)
                .thenByDescending(CrmInvestSaleUserCount::getWeight).first();
        log.debug("min1:{},花费时间:{}", saleUserCount, System.currentTimeMillis() - startTime);

        //第二种方式 先按count分组,取最小组,再在最小组中取weight最大的
        startTime = System.currentTimeMillis();
        CrmInvestSaleUserCount crmInvestSaleUserCount = Linq.of(waitAssignUserList)
                .groupBy(CrmInvestSaleUserCount::getCount).minBy(IGrouping::getKey)
                .maxBy(CrmInvestSaleUserCount::getWeight);
        log.debug("min2:{},花费时间:{}", crmInvestSaleUserCount, System.currentTimeMillis() - startTime);
    }

使用的基础类

java 复制代码
public class CrmInvestSaleUserCount {

    @Schema(description = "招商人员手机号")
    private String sales_username;

    @Schema(description = "招商人员显示名称")
    private String sales_display_name;

    @Schema(description = "招商人员已分配数量")
    private BigDecimal count;

    @Schema(description = "招商人员权重")
    private BigDecimal weight;
}
相关推荐
星夜离尘5614 小时前
MATLAB 工程实验:不等间隔流量积分,先把缺口与覆盖率说清楚
开发语言·matlab·时间戳·数据质量·数值积分
_Evan_Yao14 小时前
Redis 缓存穿透、击穿、雪崩,一次讲清!
java·spring·mybatis
Ai-_Man15 小时前
Meta Muse还是不可以导出左侧所有对话,只能点进去单条内容导出,方法不对吗?
开发语言·人工智能·ai·小程序·c#·1024程序员节
梓豪csd15 小时前
消息订阅中心:谁该收到哪条通知
java·开发语言·人工智能·低代码·自动化·1024程序员节
秋饼15 小时前
Spring AI 2.1 Message Parts 深度实战:推理签名回放与跨轮记忆持久化的源码级落地
java·ai·技术分享·后端开发
学逆向的15 小时前
C 枚举变量
c语言·开发语言·网络安全
Sakura_j_h_16 小时前
Python 在定时任务里输出 emoji,UnicodeEncodeError 从哪来
开发语言·字符编码·windows·python·定时任务
thefool11226616 小时前
TCP 1
java·1024程序员节
金銀銅鐵18 小时前
[Java] 用 GUI 展示 EnumSet 增减元素时的内部变化(下)
java·后端·ai编程
AI人工智能+电脑小能手18 小时前
一次请求打几个下游,这个Java并行任务工具类6个方法按序聚合
java·线程池·并发编程·1024程序员节·批量处理·并行任务