package chapter16;
/*
* @author Young
* 2015.03.29
* 功能:实现数组元素的比较(要实现Comparable<T>接口)
*/
import java.util.Arrays;
/*
* 实现Comparable<T>接口,其中T表示the type of objects that this object may be compared to
* 即可能要被比较的对象
*/
public class TestComparable implements Comparable<TestComparable> {
private int i;
private int j;
public TestComparable(int i, int j){
this.i=i;
this.j=j;
}
/*
* 实现Comparable接口的唯一方法compareTo(T t)。
* 这里仅仅比较了i的值。
* @see java.lang.Comparable#compareTo(java.lang.Object)
*/
public int compareTo(TestComparable t){
return this.i>t.i?1:(this.i==t.i?0:-1);
}
/*
* 重写toString()方法,调用Arrays.toString()时会间接调用此方法。
* @see java.lang.Object#toString()
*/
public String toString(){
return this.i+" "+this.j+"";
}
public static void main(String[] args) {
TestComparable[] tc={new TestComparable(5,10),new TestComparable(1,2),new TestComparable(5,2),new TestComparable(12,2)};
System.out.println(Arrays.toString(tc));
//如果没有实现Comparable接口,运行时此处会有异常java.lang.ClassCastException: chapter16.TestComparable cannot be cast to java.lang.Comparable
//因为sort方法要把参数的类型转变为Comparable,所以会出现异常。
Arrays.sort(tc);
System.out.println(Arrays.toString(tc));
}
}
Comparable<T>接口实现
最新推荐文章于 2023-11-10 20:42:43 发布