ComparatorChain compChain = new ComparatorChain();
compChain.addComparator(new BeanComparator("status"),
true);我这样写的,但是发现出来的结果并没有按该字段从大到小排序,status是百分比 如 22.18%,高手指教下

解决方案 »

  1.   


    java.util.Collections.sort(List<T> list) 
      

  2.   

    ComparatorChain compChain = new ComparatorChain();
    compChain.addComparator(new BeanComparator("status"),
    true);
    Collections.sort(list, compChain);
    我这样写的,但是排序不对
      

  3.   

    ComparatorChain compChain = new ComparatorChain();
    compChain.addComparator(new BeanComparator("status"),
    true);
    Collections.sort(list, compChain);
    我这样写的,但是排序不对
      

  4.   

    Collections.sort(list, compChain);这样是可以的。
      

  5.   

    你可以在数据库查询的时候排序,order by compChain
      

  6.   

    Collections.sort(List<T> list) 
      

  7.   

    要是我能SQL去ordery by我还跑程序里去写干嘛。 status是百分比的数字,这样写我测试出来确实不能正确的排序
      

  8.   

    import java.util.ArrayList;
    import java.util.Collections;
    public class StudentRanging {
        public static void main(String[] args) {
            ArrayList<Student> list=new ArrayList<Student>();
            Student a=new Student("胖胖",30,90.5);
            Student b=new Student("刘静",25,92.5);
            Student c=new Student("苏凯",21,80.5);
            Student d=new Student("许三多",28,90.5);
            Student e=new Student("成才",20,90.5);
            list.add(a);
            list.add(b);
            list.add(c);
            list.add(d);
            list.add(e);
            Collections.sort(list);
            for(Student s:list){
                System.out.println("info:"+s);
            }
        }}class Student implements Comparable{
        public String getName() {
            return name;
        }    public void setName(String name) {
            this.name = name;
        }    @Override
        public String toString() {
            return "Student{" +
                    "name='" + name + '\'' +
                    ", age=" + age +
                    ", score=" + score +
                    '}';
        }    public int getAge() {
            return age;
        }    public void setAge(int age) {
            this.age = age;
        }    public double getScore() {
            return score;
        }    public void setScore(double score) {
            this.score = score;
        }    private String name;
        private int age;    Student(String name, int age, double score) {
            this.name = name;
            this.age = age;
            this.score = score;
        }    private double score;
        @Override
        /**
         * 实现按照成绩降序排序
         */
        public int compareTo(Object o) {
            Student s=(Student)o;
            int result=0;
            if(this.age>s.getAge())
               result=1;
            if(this.age<s.getAge())
               result=-1;
            return result; 
        }
    }给你一个例子 ,对你一定有用!
      

  9.   

    有特殊需求的话,可以实现comparable
      

  10.   

    public class ComparableTest { public static void main(String[] args) {
    Student[] ss = new Student[5];
    for (int i = 0; i < 5; i++) {
    int temp = (int) (Math.random() * 100);
    ss[i] = new Student(temp+"", temp, temp+"");
    } // 加一个比较器
    Arrays.sort(ss, new Comparator<Student>() {
    @Override
    public int compare(Student o1, Student o2) {
    return o1.getName().compareTo(o2.getName());
    }
    });
    for (Student s : ss) {
    System.out.println(s);
    }
    }
    }class Student { private String name;
    private int grade;
    private String cname;
    public Student(String name, int grade, String cname) {
    this.name = name;
    this.grade = grade;
    this.cname = cname;
    }
    /**
     * @return Returns the name.
     */
    public String getName() {
    return name;
    }
    /**
     * @param name The name to set.
     */
    public void setName(String name) {
    this.name = name;
    }
    /**
     * @return Returns the grade.
     */
    public int getGrade() {
    return grade;
    }
    /**
     * @param grade The grade to set.
     */
    public void setGrade(int grade) {
    this.grade = grade;
    }
    /**
     * @return Returns the cname.
     */
    public String getCname() {
    return cname;
    }
    /**
     * @param cname The cname to set.
     */
    public void setCname(String cname) {
    this.cname = cname;
    }
    public String toString() {
    StringBuffer sb = new StringBuffer();
    sb.append(name);
    sb.append(":");
    sb.append(grade);
    sb.append(",");
    sb.append(cname);
    return sb.toString();
    }
    }
      

  11.   

    类beanpackage com;import java.util.Comparator;public class Student implements Comparator{private String name;
    private String age;
    public Student(){}
    public Student (String name,String age){
    this.name=name;
    this.age = age;}
    public String getName() {
    return name;
    }
    public void setName(String name) {
    this.name = name;
    }
    public String getAge() {
    return age;
    }
    public void setAge(String age) {
    this.age = age;
    }public int compare(Object arg0, Object arg1) {
    Student user0 = (Student) arg0;
    Student user1 = (Student) arg1;// 首先比较年龄,如果年龄相同,则比较名字int flag = user0.getAge().compareTo(user1.getAge());
    if (flag == 0) {
    return user0.getName().compareTo(user1.getName());
    } else {
    return flag;
    }
    }}
    test类
    package com;import java.util.Comparator;public class Test implements Comparator {
    public int compare(Object arg0, Object arg1) {
    Student user0 = (Student) arg0;
    Student user1 = (Student) arg1;// 首先比较年龄,如果年龄相同,则比较名字int flag = user0.getAge().compareTo(user1.getAge());
    if (flag == 0) {
    return user0.getName().compareTo(user1.getName());
    } else {
    return flag;
    }
    }}
    运行下看看效果
      

  12.   

    package com;import java.util.ArrayList;
    public class T3 {
    public static void main(String[] args) {
     ArrayList<Student> list=new ArrayList<Student>();
         Student a=new Student("e","20");
         Student b=new Student("d","20");
         Student c=new Student("c","20");
         Student d=new Student("b","20");
         Student e=new Student("a","20");
         list.add(a);
         list.add(b);
         list.add(d);
         list.add(e);
         list.add(c);
         Student Student = new Student();
         Collections.sort(list,Student);     for(Student s:list){
             System.out.println("结果   "+s.getName());
         }
     }
    }
    哈哈这个是测试类
    哈哈