有一个学生类,含属性id int型;name String型;score  int型
现在要利用这三个不同的属性分别对对象进行排序;最简单的算法是什么?

解决方案 »

  1.   

    简单的算法,那就选择排序法了.用你的id排序,替换到里面就行了        int[] a= new int[5];
            a[1]=10;
            a[2]=1;
            a[3]=5;
            a[4]=4;
            a[0]=16;
            int temp;
            for(int i = 0;i<a.length-1;i++){
                for(int j= i+1;j<a.length;j++){
                    if(a[i]>a[j]){
                     temp=a[j];
                     a[j]=a[i];
                     a[i]=temp;
                    }
                }
            }
            System.out.println(Arrays.toString(a));
      

  2.   

    设计三个方法 分别对应id,name,scope 的排序.
      

  3.   

    代码如下:import java.util.ArrayList;
    import java.util.Collections;
    import java.util.Comparator;
    import java.util.List;
    /** 
     * <p>功能描述: 用于排序Student的类</p>
     * @author  jack
     * @version 
     * @update:[日期YYYY-MM-DD] [更改人姓名][变更描述] 
     */ 
    public class ListSort {

    /**
     * <p>功能描述:ID排序</p>
     */
    public static final int SORT_ID    = 0;
    /**
     * <p>功能描述:名字排序</p>
     */
    public static final int SORT_NAME  = 1;
    /**
     * <p>功能描述:得分排序</p>
     */
    public static final int SORT_SCORE = 2;


    /**
     * <p>功能描述:通过类型进行排序</p>
     * @param sortType
     * @author:jack
     * @update:[日期YYYY-MM-DD] [更改人姓名][变更描述]
     */
    @SuppressWarnings("unchecked")
    public void sortStudentBy(List<Student> students, int sortType) {
    final int curSortType = sortType;
    Collections.sort(students, new Comparator() {
    public int compare(Object o1, Object o2) {
    Student s1 = (Student) o1;
    Student s2= (Student) o2;
    switch(curSortType) {
        case ListSort.SORT_ID : {
         return s1.getId()-s2.getId()>0?1:0;
        }
        case ListSort.SORT_NAME : {
         return s1.getName().compareTo(s2.getName());
    }
        case ListSort.SORT_SCORE : {
         return s1.getScore()-s2.getScore()>0?1:0;
    }
        default : return s1.getId()-s2.getId()>0?1:0;
    }
    }
    });

    }

    /**
     * <p>功能描述:初始化测试数据</p>
     * @return
     * @author:jack
     * @update:[日期YYYY-MM-DD] [更改人姓名][变更描述]
     */
    public List<Student> init() {
    List<Student> students = new ArrayList<Student>();
    Student s1 = new Student(1,"cc",60);
    Student s2 = new Student(2,"aa",80);
    Student s3 = new Student(3,"dd",100);
    students.add(s3);
    students.add(s1);
    students.add(s2);
    return students;
    }
    public static void main(String[] args) {
    ListSort sort = new ListSort();
    List<Student> students = sort.init();
    System.out.println("以名字进行排序:");
    sort.sortStudentBy(students, ListSort.SORT_NAME);
    for(Student student : students) {
    System.out.println(student.getId()+"\t"+student.getName()+"\t"+student.getScore());
    }
    sort.sortStudentBy(students, ListSort.SORT_ID);
    System.out.println("以ID进行排序:");
    for(Student student : students) {
    System.out.println(student.getId()+"\t"+student.getName()+"\t"+student.getScore());
    }

    System.out.println("以得分进行排序:");
    sort.sortStudentBy(students, ListSort.SORT_SCORE);
    for(Student student : students) {
    System.out.println(student.getId()+"\t"+student.getName()+"\t"+student.getScore());
    }
    }

    /** 
     * <p>功能描述: 学生类</p>
     * @author  jack
     * @version 
     * @update:[日期YYYY-MM-DD] [更改人姓名][变更描述] 
     */ 
    class Student {
    int id;
    String name;
    int score;

    public Student(){}

    public Student(int id, String name, int score) {
    super();
    this.id = id;
    this.name = name;
    this.score = score;
    }
    public int getId() {
    return id;
    }
    public void setId(int id) {
    this.id = id;
    }
    public String getName() {
    return name;
    }
    public void setName(String name) {
    this.name = name;
    }
    public int getScore() {
    return score;
    }
    public void setScore(int score) {
    this.score = score;
    }

    }}