Java集合排序|集合對象排序|根據集合中對象的指定屬性進行排序;

package cn.sort;

import java.util.ArrayList;
import java.util.Collections;
import java.util.List;

/**
 * 集合排序;
 * 
 * 首先先看一下關於集合的排序Demo;
 * 
 * 先創建一個自己的測試類;
 * @author Administrator
 *
 */
public class SortTest {

	public static void main(String[] args) {
		
		// 實例化一個指定類型存儲的List集合;
		List<String> list = new ArrayList<String>();
		
		// 集合數據裝載;
		list.add("aaa");
		list.add("ccc");
		list.add("bbb");
		
		// 利用Collections工具類的sort()進行升序;
		Collections.sort(list);
		
		// 控制檯數據打印;
		System.out.println(list);
		
	}
	
}
package cn.sort;

import java.util.ArrayList;
import java.util.Collections;
import java.util.Comparator;
import java.util.List;

/**
 * 
 * 集合對象排序|根據集合中對象的指定屬性進行排序;
 * 
 * 下面整理一下關於集合對象的排序規則;
 * 
 * 利用實現Comparator來進行排序;
 * 
 * 首先還是和以往一樣,創建一個自己的測試類;
 * @author Administrator
 *
 */
public class CollectionsSort {
	
	/**
	 * Java主函數|入口;
	 * @param args
	 */
	public static void main(String[] args) {
		
		/**
		 * 實例化一個指定對象存儲的List集合;
		 */
		List<Student> list = new ArrayList<Student>();
		
		// 對象數據裝載;
		Student b = new Student("BBB","Y",32);
		Student c = new Student("CCC","x",33);
		Student a = new Student("AAA","Y",31);
		
		// 集合數據裝載;
		list.add(a);
		list.add(b);
		list.add(c);
		
		// 調用排序規則;
		sortObj(list);
		
		//重新打印排序後的集合數據;
		for(Student people : list) {
			
			// 控制檯數據打印;
			System.out.println(people.getAge());
		}
	}
	
	/**
	 * 封裝排序函數|方法;
	 * @param list
	 */
	public static void sortObj(List<Student> list) {
		
		/**
		 * 自定義排序規則;
		 * 
		 * 利用Collections工具類的sort()方法進行重寫排序規則;
		 */
		Collections.sort(list,  new Comparator<Student>() {

			/**
			 * 重寫排序規則;
			 * @param a
			 * @param b
			 * @return
			 */
			@Override
			public int compare(Student a, Student b) {
				
				/**
				 * 自定義排序規則;
				 * 
				 * 如果沒有明確具體的排序內容,可以直接進行對象排序;
				 * Eg: a.compareTo(b);
				 * 
				 * 如果有明確的需求說要對某個集合中的對象按照指定屬性進行排序,
				 * 則可以按照以下方式進行自定義排序;
				 */
				String one = a.getSex();
				String two = b.getSex();
//				return two.compareTo(one);
				return one.compareTo(two);
			}
		});
	}

}

/**
 * 封裝自定義排序規則;
 * 
 * 下面是將排序規則封裝進入自己特定的工具類中,
 * 可以根據不同的需求封裝不同的函數|方法;
 * @author Administrator
 *
 */
class sortUtils implements Comparator {

	@Override
	public int compare(Object o1, Object o2) {
		String a = (String) o1;
		String b = (String) o2;
		return -a.compareTo(b);
	}
	
}

/**
 * 臨時創建一個Entity測試類;
 * 
 * @author Administrator
 *
 */
class Student {
	
	// 初始化私有屬性;
	private String name;
	private String sex;
	private int age;
	
	/**
	 * 由於申明瞭有參構造,故而
	 * 在這裏需要重新申明無參構造器;
	 * 
	 * 在默認的情況下無參構造器就存在,只是當創建了有參構造器之後便覆蓋了無參構造器;
	 * 所以需要自己重現有參構造器;
	 */
	public Student() {}

	/**
	 * 申明有參構造器;
	 * 
	 * 根據指定順序的構造器進行對象初始化;
	 * @param name
	 * @param sex
	 * @param age
	 */
	public Student(String name, String sex, int age) {
		this.name = name;
		this.sex = sex;
		this.age = age;
	}
	
	/**
	 * Get/Set;
	 * @return
	 */
	public String getName() {
		return name;
	}
	public void setName(String name) {
		this.name = name;
	}
	public String getSex() {
		return sex;
	}
	public void setSex(String sex) {
		this.sex = sex;
	}
	public int getAge() {
		return age;
	}
	public void setAge(int age) {
		this.age = age;
	}
	
}

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章