关于list.sort()中对象的属性没法调用compareTo()方法解决方案

首先咱们先了解下排序与list.sort()使用,引用http://blog.csdn.net/u011611902/article/details/49450629java

尝试下第二种方法是会发现你选择自定义类对象的排序属性没法调用compareTo()方法this

即出现以下图状况(PS: 将属性public,调用属性一样不行)spa

解决思路是(加壳)在myComp中实现一个针对int型的compare方法,再调用实现对象属性的比较:.net


代码以下code

javaBean:对象

package gysh;

public class StuBean{
    private String stuName;
    private int stuAge;
    private   float stuLength;

    public StuBean() {
    }

    public StuBean(String stuName, int stuAge, float stuLength) {
        this.stuName = stuName;
        this.stuAge = stuAge;
        this.stuLength = stuLength;
    }

    public float getStuLength() {
        return stuLength;
    }

    public void setStuLength(float stuLength) {
        this.stuLength = stuLength;
    }

    public String getStuName() {
        return stuName;
    }

    public void setStuName(String stuName) {
        this.stuName = stuName;
    }

    public int getStuAge() {
        return stuAge;
    }

    public void setStuAge(int stuAge) {
        this.stuAge = stuAge;
    }



}


main:blog

import gysh.StuBean;

import java.util.*;
public class CrzJv7 {
    public static void main(String[] args) {
    List<StuBean> stuList = new ArrayList<StuBean>();
        StuBean s1 = new StuBean("xt1",24,11.2f);
        StuBean s2 = new StuBean("xt2",23,12.2f);
        StuBean s3 = new StuBean("xt3",22,16.2f);
        StuBean s4 = new StuBean("xt4",21,15.2f);
        stuList.add(s1);
        stuList.add(s2);
        stuList.add(s3);
        stuList.add(s4);
        stuList.sort(new myComp());
        for (StuBean stuBean : stuList) {
            System.out.println(stuBean.getStuName()+" "+stuBean.getStuAge()+" "+stuBean.getStuLength());
        }
    }


    private static class myComp implements Comparator<StuBean> {
        public  int compare1(Integer o1, Integer o2) {
            return o1.compareTo(o2);
        }

        public int compare(StuBean o1, StuBean o2) {
            return compare1(o1.getStuAge(),o2.getStuAge());
        }
    }
}
 

做者能力有限,若有错误或遗漏,还望指出,谢谢!排序