Java中的2種集合排序方法介紹
更新時間:2014年10月13日 09:23:01 作者:shijiebei2009
這篇文章主要介紹了Java中的2種集合排序方法介紹,本文直接給出代碼,相關(guān)說明請看代碼中的注釋,需要的朋友可以參考下
直接上代碼:
import java.util.ArrayList;
import java.util.Collections;
import java.util.Comparator;
import java.util.List;
/**
*
* <p>
* ClassName CollectionsSort
* </p>
* <p>
* Description 主要介紹兩種集合的排序算法<br/>
* 第一:java.util.Collections.sort(java.util.List),要求所排序元素必須實現(xiàn)java.lang.Comparable接口 <br/>
* 第二:java.util.Collections.sort(java.util.List, java.util.Comparator),這個方法要求實現(xiàn)java.util.Comparator接口 <br/>
* 第三:下面的例子使用的是對int型屬性排序,對String屬性排序可以使用以下方法<br/>
* public int compareTo(Cat o){return this.getName().compareTo(o.getName(0);}<br/>
* 第四:compareTo()函數(shù)的說明 <br/>
* 如果 結(jié)果;<br/>
* <0 a<b ;<br/>=
* ==0 a==b;<br/>
* >=0 a>b;
* </p>
*
* @author wangxu wangx89@126.com
* <p>
* Date 2014-9-16 下午04:52:57
* </p>
* @version V1.0
*
*/
public class CollectionsSort {
public static void main(String[] args) {
// method1();測試第一個方法
method2();// 測試第二個方法
}
public static void method1() {
List<Cat> list = new ArrayList<Cat>();
Cat c = new Cat("a", 10);
list.add(c);
c = new Cat("b", 20);
list.add(c);
c = new Cat("c", 3);
list.add(c);
// 升序排列輸出
Collections.sort(list);
System.out.println(list);
// 降序排列輸出
Collections.sort(list, Collections.reverseOrder());
System.out.println(list);
}
public static void method2() {
List<Cat> list = new ArrayList<Cat>();
Cat c = new Cat("a", 10);
list.add(c);
c = new Cat("b", 20);
list.add(c);
c = new Cat("c", 3);
list.add(c);
Comparator<Cat> catComparator = new Cat();
// 升序排列輸出
Collections.sort(list, catComparator);
System.out.println(list);
// 降序排列輸出
catComparator = Collections.reverseOrder(catComparator);
Collections.sort(list, catComparator);
System.out.println(list);
}
}
class Cat implements Comparable<Cat>, Comparator<Cat> {
private int age;
private String name;
public Cat() {
}
public Cat(String name, int age) {
this.age = age;
this.name = name;
}
public int getAge() {
return this.age;
}
public String getName() {
return this.name;
}
public void setAge(int age) {
this.age = age;
}
public void setName(String name) {
this.name = name;
}
// 實現(xiàn)了Comparable接口,不要重寫該方法
@Override
public int compareTo(Cat o) {
// TODO Auto-generated method stub
return this.age - o.age;
}
@Override
public String toString() {
// TODO Auto-generated method stub
return "名字:" + getName() + ",年齡:" + getAge();
}
// 實現(xiàn)了Comparator接口,需要重寫該方法
@Override
public int compare(Cat o1, Cat o2) {
// TODO Auto-generated method stub
return o1.getAge() - o2.getAge();
}
}
相關(guān)文章
Java8 自定義CompletableFuture的原理解析
這篇文章主要介紹了Java8 自定義CompletableFuture的原理解析,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教2021-11-11
MyBatis 執(zhí)行動態(tài) SQL語句詳解
大家對mybatis執(zhí)行任意sql語句都了解,那么MyBatis執(zhí)行動態(tài)SQL語句呢?下面腳本之家小編給大家解答下mybatis執(zhí)行動態(tài)sql語句的方法,非常不錯,感興趣的朋友參考下吧2016-08-08
Java基礎(chǔ)類庫之StringBuffer類用法詳解
String類是在所有開發(fā)項目開發(fā)之中一定會使用的一個功能類。雖然String類很好用,但也有弊端——內(nèi)容不允許頻繁修改,所以為了解決問題,我們提供了StringBuffer類。本文就來講講StringBuffer類的用法2022-07-07
java中使用session監(jiān)聽實現(xiàn)同帳號登錄限制、登錄人數(shù)限制
本文主要介紹了java中使用session監(jiān)聽實現(xiàn)同帳號登錄限制、登錄人數(shù)限制,通過session來監(jiān)聽在線人數(shù)和登陸限制,有需要的童鞋可以了解一下。2016-10-10

