请问,我现在有个person类,有name,age,salary等属性,我要按照他的age大小来排序。
那么我这个Comparator里的compare方法改如何重写呢?

解决方案 »

  1.   

    从小到大int compare(Person p1, Person p2)
    {
        return p1.age > p2.age ? 1 : (p1.age == p2.age ? 0 : -1);
    }
      

  2.   

    数字 比较大小是这样 
    A - B  = ?  如果 <0 表示  A < B , 0 表示 A == B , >0 表示 A> BJava Comparator 也类似, -1 表示 A< B , 0 表示 A == B, 1 表示 A> B。
      

  3.   

    还是帮楼主写一个吧.这么久都没结贴,所以就来凑热闹import java.util.*;
    import java.io.*;
    class Person 
    {
    private String name;
    private int age; public Person(String name ,int age)
    {
    this.name = name;
    this.age = age;
    }

    public Person()
    {
    name = null;
    age = 0;
    }

    public String getName()
    {
    return name;
    } public int getAge()
    {
    return age;
    }

    public void setName(String name)
    {
    this.name = name;
    }

    public void setAge(int age)
    {
    this.age = age;
    }
    public static void main(String[] args)
    {
    BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
    Vector v = new Vector();
    String line = "Start";
    String name = null;
    int  age = 0;

    // 输入
    while(!line.equalsIgnoreCase("exit"))
    {
    try{
    System.out.print("请输入员工名:");
    line = br.readLine();
    if (line.equalsIgnoreCase("exit"))
    break;
    name = line;
    System.out.print("该员工年龄:");
    line = br.readLine();
     
    try {
    age = Integer.parseInt(line);
    }catch (NumberFormatException  e)
    {
    age = 0;
    }
    Person person = new Person(name,age);
    v.addElement(person);
    }catch (IOException e)
    {
    e.printStackTrace();
    }
    }

    Object[] obj = v.toArray();
    // 排序
    Arrays.sort(obj, new Comparator() {

    public int compare(Object o1, Object o2) 
    {
    Person stu1 = (Person)o1;
    Person stu2 = (Person)o2;

    // 若要从小到大排序,更改为:
    // return (int)(stu2.getAge() - stu1.getAge());
    return (int)(stu1.getAge() - stu2.getAge());
    }

    public boolean equals(Object obj) { return true ;}
    });


    // 输出
    for (int i = 0; i < obj.length; i ++)
    {
    Person stu = (Person)obj[i];
    System.out.println("员工:" + stu.getName() + " 年龄:" + stu.getAge());
    }
    }

    }F:\>java Person
    请输入员工名:Yzl
    该员工年龄:23
    请输入员工名:Hel
    该员工年龄:53
    请输入员工名:Hla
    该员工年龄:42
    请输入员工名:LAD
    该员工年龄:12
    请输入员工名:exit
    员工:Hel 年龄:53
    员工:Hla 年龄:42
    员工:Yzl 年龄:23
    员工:LAD 年龄:12