现在有Student类,Student类中有两个属性String name;
int score;怎样将Student类的对象按name排序?请高手指点!!

解决方案 »

  1.   

    用比较器comparator
    重写compare方法就行了,这个在TreeMap里经常用的
      

  2.   

    自定义函数实现吧就像String 的equal 好像java 不能重载除了+号的运算符
      

  3.   

    import java.util.*;
    public class Test { 
    public static void main(String[] args) {
         TreeMap map = new TreeMap();   
    Student s1,s2,s3;
    //实例化对象
    s1=new Student();
    s1.name="zhangsan";
    s1.score=60;
    s2=new Student();
    s2.name="ls";
    s2.score=70;
    s3=new Student();
    s3.name="ww";
    s3.score=80;
    //将对象放入map
             map.put(s1.name,s1);
    map.put(s2.name,s2);
        map.put(s3.name,s3);     Collection col = map.values();
         Iterator it = col.iterator();
         while(it.hasNext()) {
    Student s=(Student)it.next();
             System.out.println(s.name);
    }
         }  }
    class Student
    {
    String name; 
    int score;
    }
      

  4.   

    TreeMap<Student> map=new TreeMap<student>(new Comparator<Student>(){
    public int compare(Student s1,Student s2){
    if(s1==null||s2==null) return 0;
    return s1.name.compareTo(s2.name);
    return 0;
    }
    });
      

  5.   


    public class C {
    public static void main(String[] args) {
    Set<Student> set = new TreeSet<Student>();
    Student s1, s2, s3;
    // 实例化对象
    s1 = new Student();
    s1.name = "zhangsan";
    s1.score = 60;
    s2 = new Student();
    s2.name = "ls";
    s2.score = 70;
    s3 = new Student();
    s3.name = "ww";
    s3.score = 80;
    set.add(s1);
    set.add(s2);
    set.add(s3);
    for (Student stu: set) {
    System.out.println(stu.name);
    }
    }}//自定义排序
    class Student implements java.lang.Comparable {
    String name; int score; public int compareTo(Object o) {
    Student stu = (Student) o;
    return this.name.compareTo(stu.name);
    }
    }
      

  6.   


    package com.ricky.www;@SuppressWarnings("unchecked")
    public class Student implements Comparable {
    private String name;
    private String score; public String getName() {
    return name;
    } public void setName(String name) {
    this.name = name;
    } public String getScore() {
    return score;
    } public void setScore(String score) {
    this.score = score;
    } @Override
    public int compareTo(Object o) {
    @SuppressWarnings("unused")
    Student student1 = (Student) o;
    return this.getName().compareTo(student1.getName());
    } public String toString() {
    return this.getName() + ":" + this.getScore();
    }}
    package com.ricky.www;import java.util.Set;
    import java.util.TreeSet;public class Test {
    public static void main(String[] args) {
    Student ricky = new Student();
    Student jerry = new Student(); ricky.setName("ricky");
    ricky.setScore("89"); jerry.setName("jerry");
    jerry.setScore("99"); Set<Student> set = new TreeSet<Student>();
    set.add(ricky);
    set.add(jerry);
    for (Student stu1 : set) {
    System.out.println(stu1);
    }
    }
    }
      

  7.   

    各位高手见笑了,我再问一个低级的问题:怎样按score排序啊?public int compareTo(String s)传递的参数是String类型的,怎样对整形的字段进行compareTo排序啊?
      

  8.   


    public int compareTo(Student other)
    {
       return this.score.compareTo(other.score); 
    }
      

  9.   

    也发表一下,路过帮忙。import java.util.*;
    public class Student implements Comparable<Student>
    {
    public Student(String name ,int score)
    {
    this.name = name;
    this.score = score;
    }
    public int compareTo(Student other)
    {
    return name.compareTo(other.name);
    }
    public String toString()
    {
    return "score : "+score+",name : "+name;
    }
    public static void main(String[] args)
    {
    Student[] student = new Student[3];
    student[0] = new Student("ang san",3);
    student[1] = new Student("bruse si",1);
    student[2] = new Student("chang hu",9);

    Arrays.sort(student);
    for(Student s:student)
    System.out.println(s);
    }
    private String name;
    private int score;
    }
      

  10.   

    高手可不带忽悠人的啊,
    Cannot invoke compareTo(int) on the primitive type int 
    return this.score.compareTo(other.score); 参数必须是String类型啊?