对于对象的sort排序。
sort的排序对于对象,需要在类中实现comparable接口和comparaTo方法,我疑惑的是,实现这个方法是什么意思?为什么要规定大就是1,等于是0,小于是-1?对于排序有什么影响?如果有2个int成员变量,我想对a变量升序排列,或者对他降序排列,需要怎么实现comparaTo方法?麻烦举个简单的例子,这里不是很明白comparato的作用,谢谢
就是说,如果你想对自己写的类排序,你就把自己写的这个类实现Comparable接口,然后写一个comparaTo方法来规定这个类的对象排序的顺序。
在这个方法中,如果返回-1,则当前对象排前面,返回1,就排后面,0,就相等。例如:
import java.util.*;
public class A {
public static void main(String args[]) {
Example e1 = new Example(), e2 = new Example(), e3 = new Example();
e1.i = 1;
e2.i = 2;
e3.i = 3;
List l = new ArrayList();
l.add(e1);
l.add(e2);
l.add(e3);
Collections.sort(l);
for(int i = 0; i < l.size(); i++) {
System.out.println(l.get(i));
}
}
}
class Example implements Comparable {
int i;
public int compareTo(Object o) {
if (this.i > ((Example)o).i ) return -1;
else if (this.i < ((Example)o).i ) return 1;
else return 0;
}
public String toString() {
return "Example" + this.i;
}
}
Example是自定义写的类,里面就一个int成员i。我们就可以根据这个i的大小来排序。在compareTo方法中,我定义了如果i大,那么就返回-1,则该对象就跑到前面去了。当然,如果你想定义i大的应该往后排,那么你可以改变返回值,从-1改为1。就是说 ,if里面是你要比较的条件,你可以根据这个条件来返回-1,0,1来将符合条件的对象放到前面、后面或者是不变。
在main方法中,我新建了3个Example对象,里面的i是1,2,3。注意我放入的顺序,是e1,e2,e3,当我调用sort方法后,再看输出结果,可以看到是e3,e2,e1,顺序跟我放入的顺序是相反的。就是这样实现排序的。