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

如何按价格排序自定义对象ArrayList以更新RecyclerView

按自定义对象的price字段排序ArrayList的几种实用方案

把分散的三个列表整合成CoinData对象列表后,排序反而更省心了——每个对象的关联字段都绑定在一起,排序时自然能保持对应关系。下面给你几种适配不同场景的实现方式:

方案一:用Collections.sort配合自定义Comparator(无需修改CoinData类)

这是最灵活的选择,不用改动你的CoinData类,直接在需要排序的地方写逻辑,还能轻松切换升序/降序:

升序排序(价格从低到高)

Collections.sort(mData, new Comparator<CoinData>() {
    @Override
    public int compare(CoinData o1, CoinData o2) {
        // 处理price为null的情况,避免空指针异常,这里把null值放到列表末尾
        if (o1.getPrice() == null) return 1;
        if (o2.getPrice() == null) return -1;
        return o1.getPrice().compareTo(o2.getPrice());
    }
});

降序排序(价格从高到低)

只需要反转compare的结果即可:

Collections.sort(mData, new Comparator<CoinData>() {
    @Override
    public int compare(CoinData o1, CoinData o2) {
        if (o1.getPrice() == null) return 1;
        if (o2.getPrice() == null) return -1;
        return o2.getPrice().compareTo(o1.getPrice());
    }
});

方案二:让CoinData实现Comparable接口(适合固定排序规则)

如果你的CoinData在大部分场景下都需要按price排序,那可以让它实现Comparable接口,后续排序只需要一行代码:

修改CoinData类:

public class CoinData implements Comparable<CoinData> {
    // 原有的字段、getter/setter保持不变
    
    @Override
    public int compareTo(CoinData other) {
        // 默认按price升序排列,要降序的话反转返回值即可
        if (this.price == null) return 1;
        if (other.price == null) return -1;
        return this.price.compareTo(other.price);
    }
}

之后排序直接调用:

Collections.sort(mData); // 默认升序
// 如果需要降序,直接反转列表
Collections.reverse(mData);

方案三:Java 8+ 用Stream API简化代码

如果你的项目用的是Java 8及以上,用Stream写排序会更简洁,还能优雅处理null值:

升序

mData = mData.stream()
        .sorted(Comparator.comparing(CoinData::getPrice, Comparator.nullsLast(Double::compareTo)))
        .collect(Collectors.toList());

降序

mData = mData.stream()
        .sorted(Comparator.comparing(CoinData::getPrice, Comparator.nullsLast(Double::compareTo)).reversed())
        .collect(Collectors.toList());

这里用Comparator.nullsLast()直接把price为null的对象放到排序后的列表末尾,省去了手动判空的代码。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.15 04:48:20