gpt4 book ai didi

java - 如何创建一个可以接受任何对象数组并对其进行排序的函数?

转载 作者:行者123 更新时间:2023-12-01 17:00:38 26 4
gpt4 key购买 nike

我的计算机科学老师给了我一个挑战,要求我创建一个函数,该函数可以接受任何对象的数组并使用冒泡排序对其进行排序。由于 Object 类是所有类的父类,因此我考虑采用一个 Object 数组,但由于 Object 类没有可比较的对象,所以我无法真正对其进行排序。我现在有点陷入困境,因为我不知道要向该函数传递什么。我的老师说我应该传入一个 Comparable 接口(interface),但我担心我不够了解他的意思。

这是我尝试过的,但我知道它不起作用:

public static void bubble(Object arr[]) {
for (int i = 0; i < arr.length - 1; i ++) {
for (int j = 0; j < arr.length - i - 1; j++) {
if (arr[j].compareTo(arr[j + 1]) > 0) {
Object temp = arr[j];
arr[j] = arr[j + 1];
arr[j + 1] = temp;
}
}
}
}

我对 Java 不太了解,非常感谢您的帮助,谢谢!

最佳答案

带着你的困惑,你走在正确的轨道上!事实上,并非所有对象都有比较器,因此都是不可比较的;听起来你的老师希望你的方法拒绝这样的对象。

您可以强制执行 bubble方法只接受 Comparable对象如下:

public static <T extends Comparable<? super T>> void bubble(T[] arr)

这个方法头利用了一个名为generics的java概念。 -- 基本上是一个代表类型的变量,而不是对象。在本例中,您的通用变量是 T 。因此,如果使用 bubble(new Box[]) 调用该方法,然后T将代表类型 Box .

<T extends Comparable<? super T>>说:“T必须实现Comparable可以排序T”您可以阅读更多here .

关于java - 如何创建一个可以接受任何对象数组并对其进行排序的函数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61509577/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com