Google Prettify

2006-11-21

BeanCoomparator

有沒有寫過自己的bean呀?自己寫的bean會有一個問題(當然不只一個問題),就是排序。一般來說,要對物件做排序,要嘛是實作comparable的compareTo方法,要嘛是另外再針對每種不同的bean在Collection裡丟入Comparator。實作compareTo就顯得不夠彈性,另外再寫Comparator就顯得有些麻煩。但是,現在jakarta-commons-beanutils的BeanComparator可以讓你很輕鬆的建立comparator。
先看一下情境:假設我現在有一個menu物件,menu有子選單,是menu的一個property,型態是Set,名稱是menus;另外有一個orderSeq property,現在就是打算要讓取出來的menus依照orderSeq來排序。從資料庫產生物件時因故(反正就是有原因讓我們不能取出記錄時做排序,例如程式是別人寫的,programmer不想再去改之前寫的程式碼....)無法排序。現在我要對menu作排序。
先看一下代碼(唔..可能是最近老是在看大陸文章,台灣的講法是「程式碼」):

public class Menu implements java.io.Serializable {
private Long pk;
private Set menus = new HashSet();
public Set getMenus() {...
public void setMenus(Set menus) {...

排序的程式碼:

Set menus= m.getMenus();
BeanComparator bc = new BeanComparator("orderSeq");
Collection returnedMenus = new TreeSet(bc);
returnedMenus .addAll(menus);

這樣所產生的returnedMenus就會依照orderSeq property來排序了。

沒有留言 :

您或許對這些有興趣

Related Posts with Thumbnails

最後

謝謝您的閱讀,希望您可以有豐富的收獲。