动态排序JavaBean
Java中如果對對象排序可以考慮實現(xiàn)Comparable接口,但是需要排序的屬性一旦指定就不能再修改。BeanUtils組件提供了對JavaBean動態(tài)排序的支持,即可以在運行時指定排序的屬性。實例運行效果如圖
BeanComparator通過指定的屬性來比較兩個bean。它也可以用來比較級聯(lián)屬性、索引屬性、映射屬性和組合屬性等。BeanComparator默認(rèn)把指定的bean屬性傳遞給ComparableComparator。如果比較的屬性值可能有空值,那么應(yīng)該傳遞一個合適的Comparator或ComparatorChain給構(gòu)造方法。
技巧:利用Collections組件的ComparatorUtils類可以實現(xiàn)含有空值的排序,請讀者參考相關(guān)的API。
(1)編寫Employee類,該類定義了3個域:id表示員工的序號,name表示員工的姓名,salary表示員工的薪水,并且提供了相應(yīng)的get和set方法。代碼如下:
?
private int id;private String name;private double salary;public int getId() {return id;}public void setId(int id) {this.id = id;}public String getName() {return name;}public void setName(String name) {this.name = name;}public double getSalary() {return salary;}public void setSalary(double salary) {this.salary = salary;}@Overridepublic String toString() {return "員工編號:" + id + ",員工姓名:" + name + ",員工工資:" + salary;} }?
(2)編寫Test類,在該類的main()方法中創(chuàng)建了3個Employee對象并進(jìn)行初始化,然后使用salary域進(jìn)行排序。代碼如下:
?
?
package com.mingrisoft.beanutils;import java.util.ArrayList; import java.util.Collections; import java.util.List;import org.apache.commons.beanutils.BeanComparator;public class Test {@SuppressWarnings("unchecked")public static void main(String[] args) {Employee employee1 = new Employee();// 創(chuàng)建employee1對象并初始化employee1.setId(1);employee1.setName("IBM");employee1.setSalary(10000);Employee employee2 = new Employee();// 創(chuàng)建employee2對象并初始化employee2.setId(2);employee2.setName("Oracle");employee2.setSalary(1000);Employee employee3 = new Employee();// 創(chuàng)建employee3對象并初始化employee3.setId(3);employee3.setName("Sun");employee3.setSalary(100);List<Employee> list = new ArrayList<Employee>();// 創(chuàng)建list對象并保存全部員工對象 list.add(employee1);list.add(employee2);list.add(employee3);System.out.println("排序前:");for (Employee employee : list) {System.out.println(employee);// 輸出所有對象 }Collections.<Employee> sort(list, new BeanComparator("salary"));// 進(jìn)行排序System.out.println("按工資排序后:");for (Employee employee : list) {System.out.println(employee);// 輸出所有對象 }} }?
心法領(lǐng)悟:動態(tài)排序的原理。
BeanComparator實現(xiàn)了Comparator接口,利用反射根據(jù)指定的屬性值來排序。使用該類的方法比自己實現(xiàn)該功能要好很多,希望讀者認(rèn)真掌握。
?
轉(zhuǎn)載于:https://www.cnblogs.com/mrxy/p/6603365.html
總結(jié)
以上是生活随笔為你收集整理的动态排序JavaBean的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Executor框架
- 下一篇: Java开发过程中开发工具Eclipse