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;
}
相关推荐
Wang's Blog10 分钟前
Java 接入Redis: 通用命令与键管理
java·服务器·redis
Wang's Blog12 分钟前
Java 接入Redis: 列表集合与有序集合操作命令
java·服务器·redis
Ivanqhz42 分钟前
SVD++算法
java·服务器·网络·深度学习·神经网络
qq_2518364571 小时前
springboot vue3 开发实现 拼豆管理系统
java·开发语言·ai编程
caoerzhong2 小时前
JeeWMS 开源仓库管理系统全景解读:一套 Java WMS 如何把 WMS/OMS/BMS/TMS 装进同一个系统
java·开源
曹牧2 小时前
Java集合框架:List、ArrayList、Map 和 HashMap
java
顾城猿2 小时前
STOMP 协议
java
郑州光合科技余经理2 小时前
同城外卖小程序开发:下单成功后,后台导出能不能对上用户端状态
开发语言·前端·git·后端·uni-app·php·ai编程
知识分享小能手3 小时前
C++ 学习教程,从入门到精通,C++ 入门知识 — 完整知识点(1)
开发语言·c++·学习
+VX:Fegn08953 小时前
计算机毕业设计|基于springboot + vue旅游管理系统(源码+数据库+文档)
java·开发语言·vue.js·spring boot·课程设计