日期:2014-05-17  浏览次数:20721 次

重写Comparable 接口
我现在List中放了一个实体类Student 、 Student中有属性name,
我想将list中的student排序 第一个显示的是name等于我指定的一个字符串。


大神们 怎么写、最好能附上code. 

------解决方案--------------------
 Collections.sort(studentList, new Comparator<Student>() {

public int compare(Student s1, Student s2) {
return s1.getName().length() - s2.getName().length();
}
    
});
差不多这样,你就改改其中代码就行了,应该可以排序
------解决方案--------------------
package exercises;

import java.util.ArrayList;
import java.util.Collections;
import java.util.List;

public class Student implements Comparable {
String name;
int num;

Student(String name, int num) {
this.name = name;
this.num = num;
}

@Override
public int compareTo(Object o) {
Student s = (Student) o;
return name.compareTo(s.name) > 0 ? 1
: (name.compareTo(s.name) == 0 ? 0 : -1);
}

public String toString() {
return "name of student is: " + this.name;
}

public static void main(String[] args) {
List<Student> list = new ArrayList<Student>();
list.add(new Student("zhangsan", 1));
list.add(new Student("lisi", 2));
list.add(new Student("wangwu", 3));
Collections.sort(list);
for (Student s : list) {
System.out.println(s);
}
}
}
------解决方案--------------------
第一个显示等于你规定的字符串,那不是排序了。那你换位置吧。把你指定的放在第一会显示就行了。