gpt4 book ai didi

java - Collections.sort() 不适用于自定义对象

转载 作者:行者123 更新时间:2023-12-04 21:29:43 25 4
gpt4 key购买 nike

我正在尝试对我的列表进行排序,但这个不起作用。方法 collections.sort() 什么都不做。

public boolean schedule(){
List<Task> keys = new ArrayList<Task>(g.tasks.keySet());
for(int i = 0; i<keys.size();i++){
System.out.println(keys.get(i).getSize());
}
Collections.sort(keys);
for(int i = 0; i<keys.size();i++){
System.out.println(keys.get(i).getSize());
}
return true;
}

这是我在 Task 类中的 compareTo() 方法:

public int compareTo(Task t1) {
Integer csize = new Integer(t1.size);
int cmp = csize.compareTo(t1.size);

return cmp;
}

这个方法有什么问题?

最佳答案

collections.sort doesn't work for custom objects

当然可以,但在您的情况下不会,因为您的 compareTo 方法已损坏。您将 t1 的大小与自身进行比较,而不是与 this

的大小进行比较

你有:

public int compareTo(Task t1) {
Integer csize = new Integer(t1.size); // get t1's size
int cmp = csize.compareTo(t1.size); // ???? compare with t1's size ???

return cmp;
}

您需要将其更改为:

public int compareTo(Task t1) {
return Integer.compare(this.size, t1.size);
}

现在您要将参数的大小与当前对象的大小进行比较。

关于java - Collections.sort() 不适用于自定义对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39402519/

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