日韩久久久精品,亚洲精品久久久久久久久久久,亚洲欧美一区二区三区国产精品 ,一区二区福利

EnumMap與EnumSet

系統(tǒng) 2187 0
說說Java中的枚舉——EnumMap與EnumSet

??? 為了更好的支持枚舉類型,java.util中添加了兩個(gè)新類:EnumMap和EnumSet。使用它們可以更高效的操作枚舉類型。下面我一一介紹給你:

??? EnumMap 是專門為枚舉類型量身定做的Map實(shí)現(xiàn)。雖然使用其它的Map實(shí)現(xiàn)(如HashMap)也能完成枚舉類型實(shí)例到值得映射,但是使用EnumMap會(huì)更加高效:它只能接收同一枚舉類型的實(shí)例作為鍵值,并且由于枚舉類型實(shí)例的數(shù)量相對(duì)固定并且有限,所以EnumMap使用數(shù)組來存放與枚舉類型對(duì)應(yīng)的值。這使得EnumMap的效率非常高。

??? 提示: EnumMap在內(nèi)部使用枚舉類型的ordinal()得到當(dāng)前實(shí)例的聲明次序,并使用這個(gè)次序維護(hù)枚舉類型實(shí)例對(duì)應(yīng)值在數(shù)組的位置。

??? 下面是使用EnumMap的一個(gè)代碼示例。枚舉類型DataBaseType里存放了現(xiàn)在支持的所有數(shù)據(jù)庫(kù)類型。針對(duì)不同的數(shù)據(jù)庫(kù),一些數(shù)據(jù)庫(kù)相關(guān)的方法需要返回不一樣的值,示例中g(shù)etURL就是一個(gè)。

Java 代碼

// 現(xiàn)支持的數(shù)據(jù)庫(kù)類型枚舉類型定義

public enum DataBaseType{

?????????????????? MYSQL,ORACLE,DB2,SQLSERVER

}

?

// 某類中定義的獲取數(shù)據(jù)庫(kù) URL 的方法以及 EnumMap 的聲明。

……

private EnumMap<DataBaseType ,String> urls =

new EnumMap<DataBaseType ,String>(DataBaseType.class);

??????????????????

public DataBaseInfo(){

???????? urls.put(DataBaseType.DB2,"jdbc:db2://localhost:5000/sample");

???????? urls.put(DataBaseType.MYSQL,"jdbc:mysql://localhost/mydb");

???????? urls.put(DataBaseType.ORACLE,"jdbc:oracle:thin:@localhost:1521:sample");

???????? urls.put(DataBaseType.SQLSERVER,"jdbc:microsoft:sqlserver://localhost:1433;DatabaseName=mydb");

}

?

/**

* 根據(jù)不同的數(shù)據(jù)庫(kù)類型,返回對(duì)應(yīng)的 URL

* @param type ???? DataBaseType 枚舉類新實(shí)例

* @return

*/

public String getURL(DataBaseType type){

???????? return this.urls.get(type);

}

??? 在實(shí)際使用中,EnumMap對(duì)象urls往往是由外部負(fù)責(zé)整個(gè)應(yīng)用初始化的代碼來填充的。這里為了演示方便,類自己做了內(nèi)容填充。

??? 像例子中那樣,使用EnumMap可以很方便的為枚舉類型在不同的環(huán)境中綁定到不同的值上。如:例子中g(shù)etURL綁定到URL上,在其它的代碼中可能又被綁定到數(shù)據(jù)庫(kù)驅(qū)動(dòng)上去。

??? EnumSet 是枚舉類型的高性能Set實(shí)現(xiàn)。它要求放入它的枚舉常量必須屬于同一枚舉類型。EnumSet提供了許多工廠方法以便于初始化,見下表:

??? EnumSet作為Set接口實(shí)現(xiàn),它支持對(duì)包含的枚舉常量的遍歷:

Java 代碼

for(Operation op : EnumSet.range(Operation.PLUS , Operation.MULTIPLY)) {

?????????????????? doSomeThing(op);

}

EnumMap與EnumSet


更多文章、技術(shù)交流、商務(wù)合作、聯(lián)系博主

微信掃碼或搜索:z360901061

微信掃一掃加我為好友

QQ號(hào)聯(lián)系: 360901061

您的支持是博主寫作最大的動(dòng)力,如果您喜歡我的文章,感覺我的文章對(duì)您有幫助,請(qǐng)用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點(diǎn)擊下面給點(diǎn)支持吧,站長(zhǎng)非常感激您!手機(jī)微信長(zhǎng)按不能支付解決辦法:請(qǐng)將微信支付二維碼保存到相冊(cè),切換到微信,然后點(diǎn)擊微信右上角掃一掃功能,選擇支付二維碼完成支付。

【本文對(duì)您有幫助就好】

您的支持是博主寫作最大的動(dòng)力,如果您喜歡我的文章,感覺我的文章對(duì)您有幫助,請(qǐng)用微信掃描上面二維碼支持博主2元、5元、10元、自定義金額等您想捐的金額吧,站長(zhǎng)會(huì)非常 感謝您的哦!!!

發(fā)表我的評(píng)論
最新評(píng)論 總共0條評(píng)論
主站蜘蛛池模板: 伊吾县| 封丘县| 保定市| 镇雄县| 平江县| 荆门市| 冕宁县| 桐梓县| 松滋市| 望城县| 辽阳市| 杭锦旗| 理塘县| 海伦市| 和田县| 洪湖市| 西青区| 许昌市| 辛集市| 嘉兴市| 满洲里市| 普定县| 布尔津县| 临武县| 桃园县| 邳州市| 开平市| 武安市| 湖州市| 渑池县| 宜昌市| 咸阳市| 尖扎县| 绥德县| 白银市| 昌图县| 桑日县| 南江县| 海南省| 玉山县| 盱眙县|