gpt4 book ai didi

java - 如何在 Java 中对 ArrayList 中的对象中的元素进行排序

转载 作者:行者123 更新时间:2023-11-30 03:24:08 25 4
gpt4 key购买 nike

因此,在描述问题之前,先介绍一个场景。我创建了两个类,一个是实现类似功能的城市,另一个是作为城市子类的AncientCity。

City 有一个已实现的compareTo 方法,该方法可以比较City 的人口并返回某个整数作为结果。

AncientyCity也是如此,但它是与AncientCity的年龄进行比较的。

我创建了一个实用程序类并实现了两个通用方法 sort 和 printAll。

对于排序,我必须比较 City 或AncientCity 的元素(我们不知道这取决于我们在 main 方法中声明的内容),如果第一个元素恰好大于第二个元素,那么它会交换第二个到第一个,第一个到第二个。

这就是问题开始的地方,我无法使用排序方法来按升序排列元素;我尝试过使用冒泡排序,但无法交换元素。

还有其他方法可以按升序对它们进行排序吗?

顺便说一句,你不能使用 Collections.sort(),这会违背我的任务目的。

这是排序方法的片段(请记住,在继续比较 City 和/或AncientCity 对象之前,我使用 String 类进行测试):

public static void sort(ArrayList<String> object){
for(int i = 0; i < object.size(); i++){
for(int j = 1; j < object.size(); j++ ){
String a = object.get(i);
String b = object.get(j);
String tmp = null;
if(a.compareTo(b) == 1){
tmp= b;
b = a;
a = tmp;
}
}
}
}

最佳答案

您无法通过在方法中本地交换对象引用来交换值。我还建议您对 List 接口(interface)进行编程。我会推荐 > 0 而不是 == 1。您需要将j初始化为i+1,我将获得一次长度。类似这样的东西,

public static void sort(List<String> object) {
int length = (object != null) ? object.size() : 0;
for (int i = 0; i < length; i++) {
for (int j = i + 1; j < length; j++) {
String a = object.get(i);
String b = object.get(j);
if (a.compareTo(b) > 0) {
object.set(j, a);
object.set(i, b);
}
}
}
}

关于java - 如何在 Java 中对 ArrayList 中的对象中的元素进行排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30678167/

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