java集合根据属性排序

发现好多人仍是不知道根据集合所含对象的属性排序怎么样实现,今天就用这个小功能做为个人第一篇博客了java

假定要求以下:集合根据Student对象的age属性排序。ide

首先建立Student类,这里要实现Comparable接口,重写compareTo方法测试

package base.attributeSort;

public class Student implements Comparable<Student>{
	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;
	}
	
}

而后建立测试类AttributeSortthis

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);
		
		List<Student> list=new ArrayList<Student>();
		list.add(stu2);
		list.add(stu3);
		list.add(stu1);
		Collections.sort(list);
		for(Student stu:list){
			System.out.println(stu.getAge()+"==="+stu.getName());
		}
	}
}

这样输出结果即为code

若是想倒叙排列的话两种办法对象

1)修改CompareTo,以下排序

public int compareTo(Student o) {
        return o.age-this.age;
    }接口

2)将AttributeSort中的Collections.sort(list);修改成Collections.sort(list,Collections.reverseOrder());get

若是是想根据其余属性排序,只须要修改compareTo方法的代码便可了,利用Jdk自带的方法仍是很简单的。博客

相关文章
相关标签/搜索