62,614
社区成员
发帖
与我相关
我的任务
分享
import java.util.*;
public class TestComparable {
public static void main(String args[]){
Student s1=new Student("ru1",45);
Student s2=new Student("ru2",50) ;
Student s3=new Student("ru3",10) ;
Student s4=new Student("ru4",15) ;
Student s5=new Student("ru",50) ;
Student st[]={s1,s2,s3,s4,s5};
Arrays.sort(st);
for(Student s:st){
System.out.println(s);
}
}
}
class Student implements Comparable<Student>{
private String name;
private int age;
public Student(String name,int age){
this.name=name;
this.age=age;
}
public int compareTo(Student s) {
int cha=this.age-s.age;
if(cha!=0){
return cha;
}else{
return this.name.compareTo(s.name);
}
}
/* public boolean equals(Object obj){
if(!(obj instanceof Student)) return false;
Student st=(Student)obj;
return (age==st.age&&name.equals(st.name));
}
public int hashCode(){
int result=17;
result=37*result+age;
result=37*result+name.hashCode();
return result;
}*/
public String toString(){
return "name:"+name+" age:"+age;
}
}
sort
public static <T extends Comparable<? super T>> void sort(List<T> list)根据元素的自然顺
序 对指定列表按升序进行排序。列表中的所有元素都必须实现 Comparable 接口。此外,列表中的所有元素
都必须是可相互比较的(也就是说,对于列表中的任何 e1 和 e2 元素,e1.compareTo(e2) 不得抛出
ClassCastException)。
此排序方法具有稳定性:不会因调用 sort 方法而对相等的元素进行重新排序。
指定列表必须是可修改的,但不必是大小可调整的。
该排序算法是一个经过修改的合并排序算法(其中,如果低子列表中的最高元素小于高子列表中的最低元素,则
忽略合并)。此算法提供可保证的 n log(n) 性能。 此实现将指定列表转储到一个数组中,并对数组进行排
序,在重置数组中相应位置处每个元素的列表上进行迭代。这避免了由于试图原地对链接列表进行排序而产生
的 n2 log(n) 性能。
参数:
list - 要排序的列表。
抛出:
ClassCastException - 如果列表包含不可相互比较 的元素(例如,字符串和整数)。
UnsupportedOperationException - 如果指定列表的列表迭代器不支持 set 操作。
另请参见:
Comparable
--------------------------------------------------------------------------------
sort
public static <T> void sort(List<T> list,
Comparator<? super T> c)根据指定比较器产生的顺序对指定列表进行
排序。此列表内的所有元素都必须可使用指定比较器相互比较(也就是说,对于列表中的任意 e1 和 e2 元
素,c.compare(e1, e2) 不得抛出 ClassCastException)。
此排序被保证是稳定的:不会因调用 sort 而对相等的元素进行重新排序。
排序算法是一个经过修改的合并排序算法(其中,如果低子列表中的最高元素小于高子列表中的最低元素,则忽
略合并)。此算法提供可保证的 n log(n) 性能。 指定列表必须是可修改的,但不必是可大小调整的。此实
现将指定列表转储到一个数组中,并对数组进行排序,在重置数组中相应位置每个元素的列表上进行迭代。这避
免了由于试图原地对链接列表进行排序而产生的 n2 log(n) 性能。
参数:
list - 要排序的列表。
c - 确定列表顺序的比较器。null 值指示应该使用元素的自然顺序。
抛出:
ClassCastException - 如果列表中包含不可使用指定比较器相互比较 的元素。
UnsupportedOperationException - 如果指定列表的列表迭代器不支持 set 操作。
另请参见:
Comparator