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

Java中汽车数组按车型排序后Arrays.binarySearch查找失败问题

故障原因

你使用的CompareByModel比较器逻辑和查找key的构造逻辑不匹配:
CompareByModel的逻辑是先按车型(model)比较,若model相同还会继续比较品牌(make)字段;但你构造查找用的key对象时,make字段传入的是空字符串""。以你测试输入的Volt为例,数组中真实存在的Volt对应make为Chevy,空字符串与Chevy的比较结果不为0,比较器会判定两个对象不相等,最终导致binarySearch命中失败。

修复方案

根据你的使用需求,有两种可选修复方式:

方案1:调整比较器仅按model字段比较(更适配你当前仅按model查找的需求)

直接修改CompareByModel的实现,仅返回model字段的比较结果即可:

class CompareByModel implements Comparator<Car> {
    public int compare(Car c1, Car c2) {
        return c1.getCarModel().compareTo(c2.getCarModel());
    }
}

方案2:构造key时传入正确的make字段

如果你需要保留同model下按make排序的逻辑,就需要在构造查找key时同时传入正确的make值,保证比较时两个字段都能匹配。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.27 08:36:07