當我們獲得乙個list後,如果希望它是按容器中,元素的某種屬性排序的話,我們是可以通過
collections.sort(mylist, new my比較器())進行排序的。
但問題是,不同的屬性要寫不同的比較器,不同的類也要寫比較器。
如果不希望重複勞動,就需要乙個通用的比較器,所以寫了以下**。
我自己命名的:基本型別單一通用比較器 是指
(1)基本型別:元素的屬性必須是:boolean,byte,char,int,long,float,double及他們的包裝類 + string,date,bigdecimal這幾種型別
(2)所謂的單一(single)是指:只比較類中的某一屬性(不像sql 的odrder by,後面可以跟n個,以後會擴充套件)
(3)通用(universal)是指:任何類都可以用(希望如此)
廢話少說,**如下:
public final class basicdatasingleuniversalcomparator implements comparator
//public singleattributecomparator(){}
/*** 建構函式
* @param c 要比較的類
* @param fieldname 類的某一屬性名稱
* @param isasc 是根據此屬性公升序排列 or倒序排列 :true為公升序,false為倒序
*/public basicdatasingleuniversalcomparator(class<?> c, string fieldname, boolean isasc)
throws exception else }
@override
public int compare(object o1, object o2) catch (exception e)
return result;
} /**
* 認為null是最小的
* @param value1
* @param value2
* @return
* @throws nosuchmethodexception
* @throws securityexception
*/private int comparebasicdata(object value1, object value2) throws exception else if(value1 == null) else if(value2 == null) else if(value1.equals(value2)) else
return result*asc; }
@suppresswarnings("unused")
private int compareboolean(final object value1, final object value2)
@suppresswarnings("unused")
private int comparebyte(final object value1, final object value2)
@suppresswarnings("unused")
private int comparecharacter(final object value1, final object value2)
@suppresswarnings("unused")
private int compareinteger(final object value1, final object value2)
@suppresswarnings("unused")
private int comparelong(final object value1, final object value2)
@suppresswarnings("unused")
private int comparefloat(final object value1, final object value2)
@suppresswarnings("unused")
private int comparedouble(final object value1, final object value2)
@suppresswarnings("unused")
private int comparedate(final object value1, final object value2)
@suppresswarnings("unused")
private int comparestring(final object value1, final object value2)
@suppresswarnings("unused")
private int comparebigdecimal(final object value1, final object value2)
}
使用方法如下:
例如我有乙個airport 機場類,裡面有乙個屬性airportcode(機場三字碼),
現在mylist存放的是airport元素列表,希望根據airportcode倒序排列(公升序true,倒序false),那麼
collections.sort(mylist, new basicdatasingleuniversalcomparator (airport.class, "airportcode", false));
就搞定了。
一 通用定時器的相關介紹
stm32的定時器是個強大的模組,定時器使用的頻率也是很高的,定時器可以做一些基本的定時,還可以做pwm輸出或者輸入捕獲功能。時鐘源問題 名為timx的有八個,其中tim1和tim8掛在apb2匯流排上,而tim2 tim7則掛在 apb1匯流排上。其中tim1 tim8稱為高階控制定時器 adva...
Redis 常用命令學習一 通用的基本命令
1 鏈結,如果需要的 redis 部署在遠端機器上,可以通過以下命令鏈結,其中 h後面跟著主機名,p後面跟埠名 redis cli h 233.2.2.4 p 6662 ping 命令用來測試客戶端和 redis 是否連線正常 127.0.0.1 6379 ping pong3 獲取 redis 配...
STM32 通用定時器基本定時功能
1.stm32的timer簡介 stm32中一共有11個定時器,其中2個高階控制定時器,4個普通定時器和2個基本定時器,以及2個看門狗定時器和1個系統嘀嗒定時器。其中系統嘀嗒定時器是前文中所描述的systick,看門狗定時器以後再詳細研究。今天主要是研究剩下的8個定時器。定時器計數器解析度 計數器型...