1. 现有一个类person有三个属性,分别是name,age,sex。有一个List对象,保存了很多person对象的实例,请编写一个函数,对List里的实例进行排序。条件:18岁以上的人,排序顺序:性别,年龄,姓名全部降序。问题:条件:18岁以上的人,排序顺序:性别,年龄,姓名全部降序。这句话不怎么看的懂啊???
大家帮忙写一下程序吧

解决方案 »

  1.   

    有一个List1里面有N个Person,取出一个新的List2,里面有M个Person,条件是age>18(最讨厌写以上,不说明含不含的),并对这M个Person排序,第一个排序依据sex,第二个age,最后是name,全部降序。
      

  2.   

    先取age>18的数组,先对sex降序排列,存在相同的一组对age降序排列,继续还是将相同的作为一组name降序排列
      

  3.   

    排序顺序:性别,年龄,姓名全部降序。
    意思应该是对这个三个字段进行综合降序, 你可以重写Person对象的equals方法把这三个字段都加进去,然后用Person的compare方法比较对象实现降序(怎么降序就不用说了吧)
      

  4.   

    写了一个,大概可以这样吧import java.util.Collections;
    import java.util.LinkedList;
    import java.util.List;class Person implements Comparable { private String name;
    private char sex;
    private int age;

    public Person(String name, char sex, int age) {
    this.name = name;
    this.sex = sex;
    this.age = age;
    }

    public String getName() {
    return name;
    }

    public char getSex() {
    return sex;
    }

    public int getAge() {
    return age;
    }

    //M代表男性,排在前,F代表女性,拍后
    public int compareTo(Object o) {
    Person p = (Person)o;
    if(getSex()=='M' && p.getSex()=='F')
    return 1;
    else if(getSex()=='F' && p.getSex()=='M')
    return -1;
    else {
    if(getAge() > p.getAge())
    return 1;
    else if(getAge() < p.getAge())
    return -1;
    else {
    return getName().compareTo(p.getName());
    }
    }
    }

    public boolean equals(Object o) {
    Person p = (Person)o;
    return name.equals(p.getName()) && sex==p.getSex() && age==p.getAge();
    } public int hashCode() {
    return super.hashCode()+age;
    }

    public String toString() {
    return "[sex=" + sex + ", age=" + age + ", name=" + name + "]"; 
    }
    }public class Test {

    public static void main(String[] args) {
    List<Person> persons = new LinkedList<Person>();
    persons.add(new Person("zhangsan1", 'M', 29));
    persons.add(new Person("zhangsan2", 'M', 23));
    persons.add(new Person("lisi1", 'M', 6));
    persons.add(new Person("lisi2", 'F', 25));
    persons.add(new Person("wangwu1", 'M', 12));
    persons.add(new Person("wangwu2", 'F', 29));
    persons.add(new Person("wangw3", 'F', 42));

    List<Person> candidates = new LinkedList<Person>();
    for(Person p : persons) {
    if(p.getAge() > 18)
    candidates.add(p);
    }
    Collections.sort(candidates);
    Collections.reverse(candidates);
    for(Person p : candidates) {
    System.out.println(p);
    }
            }
    }