mymzhbxm 2022-11-26 23:17 采纳率: 100%
浏览 2
已结题

Java中的binarySearch方法

今天学到Arrays的binarySearch方法,试着用自己定义的Father类作为数组的元素,类中有一个int age和String name,然后我想用binarySort搜索数组中的一个Father类对象,运行后报错,想问问这个方法可以这么用吗?
public class test4 {
    public static void main(String[] args) {

        Father[] arr = new Father[4];
        Father fa = new Father(3,"aassdfasg");
        arr[0] = fa;
        arr[1] = new Father(2,"gdf");
        arr[2] = new Father(5,"dada");
        arr[3] = new Father(1,"qghdfg");

        Arrays.sort(arr, new Comparator<Father>() {
            @Override
            public int compare(Father o1, Father o2) {
                return o1.getAge() - o2.getAge();
            }
        });
        System.out.println(Arrays.toString(arr));
        System.out.println(Arrays.binarySearch(arr, fa));
    }
}

Exception in thread "main" java.lang.ClassCastException: class test.Father cannot be cast to class java.lang.Comparable (test.Father is in unnamed module of loader 'app'; java.lang.Comparable is in module java.base of loader 'bootstrap')
at java.base/java.util.Arrays.binarySearch0(Arrays.java:2232)
at java.base/java.util.Arrays.binarySearch(Arrays.java:2174)
at test.test4.main(test4.java:25)
  • 写回答

2条回答 默认 最新

  • Huazie 全栈领域优质创作者 2022-11-27 00:13
    关注

    二分查找 binarySearch 里的逻辑可以看下,查找的对象需要 实现Comparable 接口,并重写 compareTo 方法

    img

    可以参考 String 类

    img


    public class Father implements Comparable<Father> {
        @Override    
        public int compareTo(Father another) {
            return this.getAge() - another.getAge();
        }
    }
    

    如有帮助,欢迎采纳哈!

    在这里插入图片描述

    本人的开源项目,欢迎star支持下!!!

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(1条)

报告相同问题?

问题事件

  • 系统已结题 12月5日
  • 已采纳回答 11月27日
  • 创建了问题 11月26日

悬赏问题

  • ¥20 docker里部署springboot项目,访问不到扬声器
  • ¥15 netty整合springboot之后自动重连失效
  • ¥15 悬赏!微信开发者工具报错,求帮改
  • ¥20 wireshark抓不到vlan
  • ¥20 关于#stm32#的问题:需要指导自动酸碱滴定仪的原理图程序代码及仿真
  • ¥20 设计一款异域新娘的视频相亲软件需要哪些技术支持
  • ¥15 stata安慰剂检验作图但是真实值不出现在图上
  • ¥15 c程序不知道为什么得不到结果
  • ¥15 键盘指令混乱情况下的启动盘系统重装
  • ¥40 复杂的限制性的商函数处理