程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> JAVA編程 >> 關於JAVA >> Java中使用commons-beanutils對List元素中的多個屬性進行排序

Java中使用commons-beanutils對List元素中的多個屬性進行排序

編輯:關於JAVA

commons-beanutils 類庫中有一個 BeanComparator 類,可以用來給 JavaBean 排序。但是這個類一次只能對一個屬性排序。下面是一個利用 BeanComparator 實現對 JavaBean 的多個屬性進行排序的例子,非常簡單:

1.import org.apache.commons.beanutils.BeanComparator;
2.import java.util.Collections;
3.import java.util.Comparator;
4.import java.util.List;
5. 
6./**
7. * 對 List 元素的多個屬性進行排序的類
8. */
9.@SuppressWarnings({"unchecked"})
10.public class ListSorter {
11. 
12.    /**
13.     * List 元素的多個屬性進行排序。例如 ListSorter.sort(list, 

"name", "age"),則先按
14.     * name 屬性排序,name 相同的元素按 age 屬性排序。
15.     *
16.     * @param list       包含要排序元素的 List
17.     * @param properties 要排序的屬性。前面的值優先級高。
18.     */
19.    public static <V> void sort(List<V> list, final 

String... properties) {
20.        Collections.sort(list, new Comparator<V>() {
21.            public int compare(V o1, V o2) {
22.                if (o1 == null && o2 == null) return 0;
23.                if (o1 == null) return -1;
24.                if (o2 == null) return 1;
25. 
26.                for (String property : properties) {
27.                    Comparator c = new BeanComparator(property);
28.                    int result = c.compare(o1, o2);
29.                    if (result != 0) {
30.                        return result;
31.                    }
32.                }
33.                return 0;
34.            }
35.        });
36.    }
37.}
  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved