You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何对Java ArrayList按多个字段排序,相同首字母按次字母排序

代码修改方案

你只需要调整Comparator的compare逻辑:先判断firstLetter的比较结果,若结果不为0(即两个元素的首字母不相等)直接返回该结果,若结果为0再返回secondLetter的比较结果即可。

兼容Java 8之前版本的写法(和原有写法风格一致)

Collections.sort(itemList, new Comparator<Item>() {
    @Override
    public int compare(Item o1, Item o2) {
        // 先比较firstLetter
        int firstCompare = Character.compare(o1.getFirstLetter(), o2.getFirstLetter());
        if (firstCompare != 0) {
            return firstCompare;
        }
        // firstLetter相同的情况下再比较secondLetter
        return Character.compare(o1.getSecondLetter(), o2.getSecondLetter());
    }
});

Java 8及以上更简洁的链式写法

如果你的项目使用Java 8及更高版本,还可以用Comparator的静态方法链式调用,代码更简洁易读:

itemList.sort(Comparator.comparing(Item::getFirstLetter)
        .thenComparing(Item::getSecondLetter));

内容的提问来源于stack exchange,提问作者Red Knight

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.02 09:39:03