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;
}
相关推荐
Tony Bai2 小时前
“我曾想付钱给 Google 去工作”—— Russ Cox 深度访谈:Go 的诞生、演进与未来
开发语言·后端·golang
sali-tec2 小时前
C# 基于halcon的视觉工作流-章66 四目匹配
开发语言·人工智能·数码相机·算法·计算机视觉·c#
45288655上山打老虎2 小时前
C++完美转发
java·jvm·c++
Seven972 小时前
查找算法
java
hnlgzb2 小时前
安卓app开发,如何快速上手kotlin和compose的开发?
android·开发语言·kotlin
无敌最俊朗@3 小时前
STL-deque面试剖析(面试复习4)
开发语言
APIshop3 小时前
用 Python 把“API 接口”当数据源——从找口子到落库的全流程实战
开发语言·python
毕设源码-朱学姐3 小时前
【开题答辩全过程】以 公务员考试在线测试系统为例,包含答辩的问题和答案
java
serendipity_hky3 小时前
【SpringCloud | 第2篇】OpenFeign远程调用
java·后端·spring·spring cloud·openfeign
Java Fans3 小时前
Qt Designer 和 PyQt 开发教程
开发语言·qt·pyqt