今天看书的时候提到了链表排序功能 如果所要排序内容并不是数字或者字符串,那么就要重写compareTo函数
书上举的例子是 按身高升序排序
public int compareTo(object b){
student st = (student) b;
return this.height-st.height;
}
这样就能通过这个函数 实现按身高升序排序了
但是呢 如果说 我有一个class 想要按照 字符串升序排列 应该怎么办
首先想到的应该是 那我把换成this.name 不就行了吗 但是java不支持字符串直接相减
所以我干脆写了一个函数 来替代这个 -
public int stringCompare(Student stu){
return this.name.compareTo(stu.name);
}
public int compareTo(Object b){
Student st = (Student)b;
return this.stringCompare(st);
}
然后看效果
List<Student> list = new LinkedList<Student>();
list.add(new Student("abe",100));
list.add(new Student("abd",150));
list.add(new Student("abc",200));
Collections.sort(list);
abe 身高 :100
abd 身高 :150
abc 身高 :200
排序后 list中的信息
abc 身高 :200
abd 身高 :150
abe 身高 :100