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自帶的方法仍是很簡單的。博客

相關文章
相關標籤/搜索