List 集合指定值升序降序排列Comparator实现

升序排序

升序排序通常是指从小到大的排序。对于数值类型来说,可以直接使用 compareTo 方法,而对于其他类型,可以根据实际需求实现比较逻辑。

示例代码

javascript 复制代码
import java.util.Comparator;
import java.util.List;
import java.util.ArrayList;

class Spgg2BO {
    private String spdm;
    private String ggdm;
    private String ggmc;
    private Integer ggwz;

    public Spgg2BO(String spdm, String ggdm, String ggmc, Integer ggwz) {
        this.spdm = spdm;
        this.ggdm = ggdm;
        this.ggmc = ggmc;
        this.ggwz = ggwz;
    }

    public Integer getGgwz() {
        return ggwz;
    }
}

public class Main {
    public static void main(String[] args) {
        List<Spgg2BO> spgg2List = new ArrayList<>();

        // 添加一些示例数据
        spgg2List.add(new Spgg2BO("001", "01", "规格一", 10));
        spgg2List.add(new Spgg2BO("002", "02", "规格二", 5));
        spgg2List.add(new Spgg2BO("003", "03", "规格三", 20));

        // 使用Comparator.comparing按ggwz升序排序
        spgg2List.sort(Comparator.comparing(Spgg2BO::getGgwz));

        // 输出排序后的结果
        for (Spgg2BO item : spgg2List) {
            System.out.println(item.getGgwz());
        }
    }
}

降序排序

降序排序是指从大到小的排序。对于数值类型,可以通过反转比较结果来实现降序排序。

示例代码

javascript 复制代码
import java.util.Comparator;
import java.util.List;
import java.util.ArrayList;

class Spgg2BO {
    private String spdm;
    private String ggdm;
    private String ggmc;
    private Integer ggwz;

    public Spgg2BO(String spdm, String ggdm, String ggmc, Integer ggwz) {
        this.spdm = spdm;
        this.ggdm = ggdm;
        this.ggmc = ggmc;
        this.ggwz = ggwz;
    }

    public Integer getGgwz() {
        return ggwz;
    }
}

public class Main {
    public static void main(String[] args) {
        List<Spgg2BO> spgg2List = new ArrayList<>();

        // 添加一些示例数据
        spgg2List.add(new Spgg2BO("001", "01", "规格一", 10));
        spgg2List.add(new Spgg2BO("002", "02", "规格二", 5));
        spgg2List.add(new Spgg2BO("003", "03", "规格三", 20));

        // 使用Comparator.comparing按ggwz降序排序
        spgg2List.sort(Comparator.comparing(Spgg2BO::getGgwz).reversed());

        // 输出排序后的结果
        for (Spgg2BO item : spgg2List) {
            System.out.println(item.getGgwz());
        }
    }
}

在上面的降序排序示例中,我们使用了 Comparator.comparing(Spgg2BO::getGgwz).reversed() 方法来创建一个比较器,该比较器首先基于 getGgwz 方法获取的 ggwz 值进行比较,然后通过 .reversed() 方法来反转比较结果,从而实现降序排序。

总结来说,升序排序是按照自然顺序从小到大排序,而降序排序是按照相反的顺序从大到小排序。你可以通过改变比较器的实现方式来实现不同的排序顺序。

相关推荐
phltxy3 小时前
C语言操作符详解
java·c语言·算法
aqiu1111113 小时前
【LeetCode 902】最大为 N 的数字组合 - 详细题解与数位组合思路
数据结构·算法·leetcode·蓝桥杯·数位dp
步行cgn4 小时前
@Configuration 详解:Spring 配置类的核心注解
java·后端·spring
sunshine22 girl4 小时前
Java学习一 环境配置2 安装和基本使用Idea
java·学习·intellij-idea
嘿嘿-666 小时前
Windows 一键使用 GPT-6 Astra:Codex CLI 配置教程
java·人工智能·windows·gpt·chatgpt·web
策案案案7 小时前
YOLO: 将AI Agents嵌入到IntelliJ IDEA
java·大数据·人工智能·笔记·yolo·microsoft·intellij-idea
2601_962297487 小时前
在python3中、下列输出变量a的正确写法是_2020超星大数据Python免费答案
数据结构·python·算法·编程·字符串操作
辰烨chenye8 小时前
LeetCode Hot 100 题解 · 堆篇
java·算法·leetcode
shehuiyuelaiyuehao9 小时前
算法29,前缀和,除自身以外的数组的乘积
java·数据结构·算法
小刘在重生~9 小时前
Java常用类|String类详解 + BigDecimal精准计算(含面试题)
java·开发语言·python