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;
}
}