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

Java如何实现多优先级自定义排序:Foo>Bar>字母序>日期倒序

解决方法

只需要修改doComparison方法,补充Bar的二级优先级判断逻辑即可,原有比较器的拼接规则无需调整,即可完全匹配你要求的排序优先级:

private static int doComparison(String stuff, String otherStuff) {
    // 最高优先级:Foo排在最前
    if (Foo.equals(stuff) && !Foo.equals(otherStuff)) {
        return -1;
    }
    if (!Foo.equals(stuff) && Foo.equals(otherStuff)) {
        return 1;
    }
    // 二级优先级:Bar排在Foo之后、其他名称之前
    if (Bar.equals(stuff) && !Bar.equals(otherStuff)) {
        return -1;
    }
    if (!Bar.equals(stuff) && Bar.equals(otherStuff)) {
        return 1;
    }
    // 其余按name字母升序排列
    return stuff.compareTo(otherStuff);
}

逻辑验证

原有代码的比较器拼接顺序compareBazStuff.thenComparing(compareBazStartDates)已经天然适配你的需求:

  • 先通过compareBazStuff完成「Foo > Bar > 字母升序」的名称维度排序
  • 名称维度排序结果相同时,再通过compareBazStartDates按startDate倒序排列
    完全符合你要求的优先级规则,不需要额外调整其他代码。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.02 13:21:04