1. 程式人生 > >java的list集合如何根據物件中的某個欄位排序

java的list集合如何根據物件中的某個欄位排序

集合提供了一個工具類:java.util.Collections
集合的工具類提供了若干靜態方法,可以方便我們隊集合做一系列操作,其中之一就是排序
需要注意,提供的方法只能對List集合排序,因為Set集合不全是有序的。
但是如果要求根據集合中某個元素的值排序,該如何進行呢?
程式碼演示

public static void main(String[] args) {
        List<String> list = new ArrayList<String>();
        list.add("abc");
        list
.add("abcd"); list.add("abcde"); System.out.println(list); Collections.sort(list, new Comparator<String>(){ public int compare(String o1, String o2) { return o1.length()-o2.length(); }}); System.out.println(list); }

此段程式碼將根據字串長度從短到長排序。


單獨將此程式碼取出

Collections.sort(list, new Comparator<String>(){
            public int compare(String o1, String o2) {
                return o1.length()-o2.length();
            }});

Collection提供了一個過載的sort方法,可以允許傳入一個額外的比較器
按照該比較器的規則對元素比較大小後進行排序。
1.排序方式可以自定,更靈活
2.不要求元素必須實現Comparable介面,沒有侵入性


更多例子:比如在對員工集合進行整理時,要對員工工資進行排序,也可以使用此方法
只需將compare中引數,返回值進行修改即可。

public int compare(Emp o1, Emp o2) {
                    return o1.getSalary()-o2.getSalary(); 
                }

根據工資升序排序。