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;
}
相关推荐
Grey Zeng6 小时前
Java SE 25新增特性
java·jdk·jdk新特性·jdk25
雨白7 小时前
Java 线程通信基础:interrupt、wait 和 notifyAll 详解
android·java
架构师沉默11 小时前
设计多租户 SaaS 系统,如何做到数据隔离 & 资源配额?
java·后端·架构
Java中文社群12 小时前
重要:Java25正式发布(长期支持版)!
java·后端·面试
每天进步一点_JL14 小时前
JVM 类加载:双亲委派机制
java·后端
用户2986985301414 小时前
Java HTML 转 Word 完整指南
java·后端
渣哥14 小时前
原来公平锁和非公平锁差别这么大
java
渣哥14 小时前
99% 的人没搞懂:Semaphore 到底是干啥的?
java
J2K15 小时前
JDK都25了,你还没用过ZGC?那真得补补课了
java·jvm·后端
kfyty72515 小时前
不依赖第三方,不销毁重建,loveqq 框架如何原生实现动态线程池?
java·架构