首先咱们先了解下排序与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()); } } }
做者能力有限,若有错误或遗漏,还望指出,谢谢!排序