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