发现好多人还是不知道根据集合所含对象的属性排序怎么样实现,今天就用这个小功能作为我的第一篇博客了
假定要求如下:集合根据Student对象的age属性排序。
首先创建Student类,这里要实现Comparable接口,重写compareTo方法
package base.attributeSort;public class Student implements Comparable{ private String name; private int age; public Student(){} public Student(String name,int age){ this.name=name; this.age=age; } @Override public int compareTo(Student o) { return this.age-o.age; } public String getName() { return name; } public void setName(String name) { this.name = name; } public int getAge() { return age; } public void setAge(int age) { this.age = age; } }
然后创建测试类AttributeSort
package base.attributeSort;import java.util.ArrayList;import java.util.Collections;import java.util.List;public class AttributeSort { public static void main(String[] args) { Student stu1=new Student("zhangsan",3); Student stu2=new Student("lisi",4); Student stu3=new Student("wangwu",5); Listlist=new ArrayList (); list.add(stu2); list.add(stu3); list.add(stu1); Collections.sort(list); for(Student stu:list){ System.out.println(stu.getAge()+"==="+stu.getName()); } }}
这样输出结果即为
如果想倒叙排列的话两种办法
1)修改CompareTo,如下
public int compareTo(Student o) {
return o.age-this.age; }2)将AttributeSort中的Collections.sort(list);修改为Collections.sort(list,Collections.reverseOrder());
如果是想根据其他属性排序,只需要修改compareTo方法的代码即可了,利用Jdk自带的方法还是很简单的。