部分排序(Comparable)怎么做

[code="java"]
import java.util.Date;

public class User implements Comparable
{

private Integer userid;

//年龄
private Integer age;

//注册日期
private Date regDate;

/**
 * 1 :首先,把age=30的拿出来,先排序,regDate大的排序在前面
 * 2 :然后,排序age!=30的,regDate大的排序在前面 
 */
public int compareTo(User o)
{
    return 0;
}

}
[/code]

排序逻辑见上面的注释

比如说,有如下数据
1 20 2013-01-21
2 30 2013-04-25
3 19 2013-11-14
4 55 2013-03-16
5 30 2013-02-20

排序后的结果为:

2 30 2013-04-25
5 30 2013-02-20
3 19 2013-11-14
4 55 2013-03-16
1 20 2013-01-21

请问,怎么做

[quote]
import java.text.DateFormat;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Collection;
import java.util.Collections;
import java.util.Date;

public class User implements Comparable {

private Integer userid;

// 年龄
private Integer age;

// 注册日期
private Date regDate;

public User(Integer userid, Integer age, Date regDate) {
    this.userid=userid;
    this.age=age;
    this.regDate=regDate;
}

/**
 * 1 :首先,把age=30的拿出来,先排序,regDate大的排序在前面 2 :然后,排序age!=30的,regDate大的排序在前面
 */
@Override
public int compareTo(User o) {
    if (this.age == 30 && o.age == 30) {
        return o.regDate.compareTo( this.regDate);
    } else if (this.age == 30) {
        return -1;
    } else if (o.age == 30) {
        return 1;
    } else {
        return o.regDate.compareTo(this.regDate);
    }
}

@Override
public String toString() {
    return this.userid+" "+this.age+" ";
}

public static void main(String[] args) throws ParseException {
    /*
     * 1 20 2013-01-21 2 30 2013-04-25 3 19 2013-11-14 4 55 2013-03-16 5 30
     * 2013-02-20
     */

    ArrayList<User> list = new ArrayList<User>();
    DateFormat format1 = new SimpleDateFormat("yyyy-MM-dd");
    User u1 = new User(1, 20, format1.parse("2013-01-21"));
    User u2 = new User(2, 30, format1.parse("2013-04-25"));
    User u3 = new User(3, 19, format1.parse("2013-11-14"));
    User u4 = new User(4, 55, format1.parse("2013-03-16"));
    User u5 = new User(5, 30, format1.parse("2013-02-20"));
    list.add(u1);
    list.add(u2);
    list.add(u3);
    list.add(u4);
    list.add(u5);

    System.out.println(list);
    Collections.sort(list);
    System.out.println(list);

}

}
[/quote]

排序前:

1 20 2013-01-21
2 30 2013-04-25
3 19 2013-11-14
4 55 2013-03-16
5 30 2013-02-20

排序后:
2 30 2013-04-25
5 30 2013-02-20
3 19 2013-11-14
4 55 2013-03-16
1 20 2013-01-21
排序后怎么看 都好像是排序前 而 排序前看着 好像是排序号
哥们是不是你的一些字段还没有放出来啊?

[code="java"]import java.text.DateFormat;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Collections;
import java.util.Date;

public class User implements Comparable {

// id
private Integer userid;

// 年龄
private Integer age;

// 注册日期
private Date regDate;

public User(Integer userid, Integer age, Date regDate) {
    this.userid = userid;
    this.age = age;
    this.regDate = regDate;
}
@Override
public int compareTo(User u) {
    if (this.age == 30 && u.age == 30) {
        return u.regDate.compareTo(this.regDate);
    } else if (this.age == 30) {
        return -1;
    } else if (u.age == 30) {
        return 1;
    } else {
        return u.regDate.compareTo(this.regDate);
    }
}

@Override
public String toString() {
    return this.userid + " " + this.age + " "
            + new SimpleDateFormat("yyyy-MM-dd").format(this.regDate);
}

public static void main(String[] args) throws ParseException {
    ArrayList<User> list = new ArrayList<User>();
    DateFormat format1 = new SimpleDateFormat("yyyy-MM-dd");
    User u1 = new User(1, 20, format1.parse("2013-01-21"));
    User u2 = new User(2, 30, format1.parse("2013-04-25"));
    User u3 = new User(3, 19, format1.parse("2013-11-14"));
    User u4 = new User(4, 55, format1.parse("2013-03-16"));
    User u5 = new User(5, 30, format1.parse("2013-02-20"));
    list.add(u1);
    list.add(u2);
    list.add(u3);
    list.add(u4);
    list.add(u5);

    print(list,"排序前");
    Collections.sort(list);
    print(list,"排序后");

}

public static void print(ArrayList<User> l, String comment) {
    System.out.println(comment);
    for (User u : l) {
        System.out.println(u);
    }
}

}[/code]

结果
[quote]排序前
1 20 2013-01-21
2 30 2013-04-25
3 19 2013-11-14
4 55 2013-03-16
5 30 2013-02-20
排序后
2 30 2013-04-25
5 30 2013-02-20
3 19 2013-11-14
4 55 2013-03-16
1 20 2013-01-21
[/quote]

分数给 sprite311 吧 …… 需求是上帝啊

现在很流行直接要代码。。。。