import java.util.ArrayList;
import java.util.Collections;
import java.util.Comparator;
import java.util.List;
public class CollectionsDemo {
public static void main(String[] args) {
/**
* Collections.sort方法實現排序
* Collections是集合的工具類,它提供了很多便於我們操作集合的方法
* 其中就有用於集合排序的sort方法
* -void sort(List<T> list):該方法的作用是對給定的集合元素進行自然排序
*
* 在使用Collecions的sort排序的集合元素都必須是Comparable接口的實現類,該接口表示其子類是可比較的
* 因爲實現該接口必須重寫抽象方法:-int compareTo(T t)
*
* 自然排序(Collections.sort(list)):list集合中的元素必須實現Comparable接口,重寫compareTo方法,一般用於java對提供的API對象進行排序(String,Date,Integer等)
* 自定義排序(Collections.sort(list,比較器));對list集合中的對象沒有限制,必須提供“比較器”對象,sort會利用比較器進行比較大小進行排序,用途廣泛:可以進行任意數據比較
*/
List<String> list=new ArrayList();
list.add("Aange");
list.add("erge");
list.add("dage");
Collections.sort(list);
System.out.println(list);
//sort方法是如何比較兩個字符串大小的
//Aange 比 dage小?
//String類型提供比較字符串大小的方法
//compare 比較 to 與xxx比較
//compareTo 返回三種狀態:>0 <0 ==0
//n>0表示第一個數大
//n<0表示第一個數小
//n=0表示相等 compareTo比較值爲0時equals爲true
int n="Aange".compareTo("dage");
System.out.println(n);//-35<0
List<Cat> list1=new ArrayList<Cat>();
list1.add(new Cat(9));
list1.add(new Cat(15));
list1.add(new Cat(30));
list1.add(new Cat(13));
Collections.sort(list1,new ByAge());//按自定義比較
/**輸出比較結果**/
for(int i=0;i<list1.size();i++) {
System.out.println(list1.get(i).age);
}
}
}
/**
* 自定義比較器 Comparator
*
*/
class ByAge implements Comparator<Cat> {
//自定義比較算法:按照貓對象的年齡比較大小
//返回>0則o1>02;返回<0則o1<o2;返回=0,o1=o2
@Override
public int compare(Cat o1, Cat o2) {
return o1.age-o2.age;
}
}
//自然排序
class Cat implements Comparable<Cat>{
int age;
public Cat(int age) {
super();
this.age = age;
}
@Override
public int compareTo(Cat o) {
return this.age-o.age;//升序
}
}
java-Collections的sort集合排序方法
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.