shu*_*rok 2 java sorting collections object
我正在尝试对我的列表进行排序,但这个不起作用.方法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;
}
Run Code Online (Sandbox Code Playgroud)
这是Task类中的compareTo()方法:
public int compareTo(Task t1) {
Integer csize = new Integer(t1.size);
int cmp = csize.compareTo(t1.size);
return cmp;
}
Run Code Online (Sandbox Code Playgroud)
这种方法有什么问题?
collections.sort不适用于自定义对象
确实如此,但在你的情况下不会因为你的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;
}
Run Code Online (Sandbox Code Playgroud)
您需要将其更改为:
public int compareTo(Task t1) {
return Integer.compare(this.size, t1.size);
}
Run Code Online (Sandbox Code Playgroud)
所以现在你要将参数的大小与当前对象的大小进行比较.