比較器 基本型別單一通用比較器

2021-08-30 18:44:52 字數 2712 閱讀 6627

當我們獲得乙個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個定時器。定時器計數器解析度 計數器型...