枚舉

聲明:本欄目所使用的素材都是凱哥學(xué)堂VIP學(xué)員所寫春塌,學(xué)員有權(quán)匿名几晤,對文章有最終解釋權(quán)宫补;凱哥學(xué)堂 旨在促進(jìn)VIP學(xué)員互相學(xué)習(xí)的基礎(chǔ)上公開筆記盛撑。

集合框架

1.枚舉

枚舉也是在JDK1.5以后才出現(xiàn)的碎节,泛型主要解決的是說明一個集合里面存儲的是什么類型的對象的。那枚舉是用來干啥的呢抵卫?

枚舉在java中是專門用來做選擇的狮荔。先建好maven環(huán)境:

配置好的環(huán)境如上,我們回想一下Calendar類下的get方法介粘,它的參數(shù)是int field殖氏,其實(shí)本意是要我們傳入年、月姻采、日雅采、時(shí)、分慨亲、秒這些參數(shù)從而來得到對應(yīng)的值的婚瓜,但是它的參數(shù)的變量名field并沒有描述清楚這個參數(shù)到底該傳什么樣的值的,像這種整形的參數(shù)變量刑棵,描述含義不清楚的(不是weight巴刻、height、length之類的含義清晰的變量)铐望,我們不知道該傳入什么樣的參數(shù)值的時(shí)候冈涧,通常可以通過看這個類中定義了哪些常量正蛙,然后把類中定義的常量(常量標(biāo)示符表示某個int數(shù)值)作為參數(shù)值傳入督弓,比如這里的get方法,就可以傳入Calendar.YEAR這樣的常量值乒验,來得到年份愚隧。

但是最開始的時(shí)候我們并不知道這種int field的參數(shù)就應(yīng)該傳入類中定義的常量標(biāo)示符的,那么java中就推出了枚舉來解決這個問題锻全。

枚舉是一個選擇器狂塘,比如你的方法的參數(shù)類型要限定在A/B/C/D/E/F這六個對象之間,你就可以定義一個枚舉選擇器Type鳄厌,把A/B/C/D/E/F六個對象寫進(jìn)來荞胡,然后在方法中的參數(shù)寫成Type t,當(dāng)使用方法的時(shí)候了嚎,一點(diǎn)到t上面就會知道這個參數(shù)是一個枚舉泪漂,同時(shí)知道了參數(shù)類型是在什么之間做選擇廊营。如下:

如上,使用枚舉你就能很清楚的知道該傳入的參數(shù)在哪些對象之間做選擇萝勤,相反你如果寫int露筒,同時(shí)變量名的表義又不清楚的話,是無法知道該傳入什么樣的參數(shù)值的敌卓。

那么我們方法的參數(shù)是枚舉的方法慎式,我們就可以在方法里面做一些選擇的邏輯處理:

枚舉里面既可以寫構(gòu)造器也可以寫方法,構(gòu)造器必須是私有的趟径,但是在枚舉里面寫構(gòu)造器和方法都是沒有實(shí)際意義的:

補(bǔ)充一個泛型的循環(huán):

這里的for-each循環(huán)實(shí)際上也就是迭代器做出來的瘪吏。 Collections集合工具類:

認(rèn)識一下JDK API?

什么是API,就是java里面所有官方公布的操作類舵抹,和這些類里面的方法肪虎,和一些簡單的小案例,是一個幫助惧蛹、說明文檔。

網(wǎng)上在線中文API 刑枝,百度輸入 JDK API

通常情況下拿API 來是為了看某個操作類下的一些方法香嗓,看它們是怎么使用的,用來完成什么樣的功能的装畅。

Collections集合工具類:

Collections集合工具類里面的方法大部分都是針對List集合進(jìn)行相應(yīng)功能操作的:

1.混合打亂Collections.shuffle(List l);

這種打亂方法靠娱,每次運(yùn)行產(chǎn)生的結(jié)果都是不一樣的。 排序方法Collections.sort(List l):

其實(shí)掠兄,上面的String為啥能夠直接進(jìn)行排序像云,是有原因的,那是因?yàn)镾tring里面實(shí)現(xiàn)了Comparable接口里面的CompareTo方法蚂夕,所以才能夠直接進(jìn)行排序迅诬,我們自己定義一個student類,看看能否直接排序婿牍?

我們自己寫的類Student侈贷,最開始沒有實(shí)現(xiàn)Comparable接口,在使用sort方法來比較不同的student對象的時(shí)候會報(bào)錯等脂,這是肯定的俏蛮,因?yàn)槟銢]有實(shí)現(xiàn)Comparable的接口,它不知道按照什么東西來進(jìn)行比較上遥,然后我們?nèi)?shí)現(xiàn)Comparable接口:

如上所示搏屑,我們的student類實(shí)現(xiàn)了Comparable接口后,重寫了compareTo方法粉楚,然后就可以使用sort方法來進(jìn)行直接排序了辣恋。

Collections.addAll批量的加入數(shù)據(jù):

Collections.replaceAll()替換集合里面的數(shù)據(jù):

Collections.binarySearch()搜索對象在哪個下標(biāo)下:

Collections.reverse()反轉(zhuǎn),將集合里面的對象反轉(zhuǎn)過來:

Collections.fill()全部替換,將集合里面的對象全部替換為某個對象:

Collections.copy()拷貝抑党,將一個集合的數(shù)據(jù)拷貝到另一個集合中包警,目標(biāo)集合的長度至少要比源集合的長度長,不然會報(bào)錯底靠。如果源集合長度比目標(biāo)集合長度短害晦,則源集合里面的數(shù)據(jù)會覆蓋目標(biāo)集合里面前面部分的數(shù)據(jù):

還有很多方法,以后要用的時(shí)候可以參考JDK API文檔進(jìn)行查詢暑中。

Map集合:雙列集合壹瘟,一個主鍵一個值。又稱之為鍵值對集合鳄逾,一個key 一個value稻轨。

鍵值對集合,鍵不可以重復(fù)雕凹,值可以重復(fù)殴俱,因?yàn)槲覀兊哪弥怠⒉橹得兜帧h值都是根據(jù)主鍵來進(jìn)行的线欲,如果你兩個或多個主鍵相同的話,就無法進(jìn)行拿值汽摹、查值李丰、刪值等操作了。

Map集合的結(jié)構(gòu):下面有HashMap和Hashtable兩個集合逼泣,Map集合里面的主要方法如上: HashMap集合繼承于AbstractMap趴泌,然后AbstractMap實(shí)現(xiàn)了Map接口。 HashMap是非線程安全的拉庶,Hashtable是線程安全的嗜憔。

HashMap的方法和Hashtable的方法是幾乎一樣的,只要看看HashMap里面的方法:

由上所示砍的,當(dāng)多個主鍵一樣的時(shí)候痹筛,你去拿值的話,拿的是最后一個廓鞠。

Hashtable的主鍵和值都不能是null帚稠。

而HashMap的主鍵或者值都可以是null。

拿出集合中的所有值床佳,用到方法values()滋早,返回值是一個Collection集合對象,然后用for-each循環(huán)把Collection集合里面的【學(xué)Java砌们,到凱哥學(xué)堂kaige123.com】所有數(shù)據(jù)拿出來杆麸,這里如果是HashMap集合的話搁进,拿出來的數(shù)據(jù)是雜亂無序的,而如果是Hashtable的話昔头,拿出來的數(shù)據(jù)是有順序的:

取出集合里面所有的鍵饼问,用方法keySet(),這個方法的返回值是Set集合對象揭斧,然后使用for-each循環(huán)把Set集合里面的所有數(shù)據(jù)都取出來莱革。

如上顯示,用HashMap的話取出來的鍵是雜亂無序的讹开,而Hashtable取出來的鍵是有序的盅视。 鍵-值一起拿方法entrySet(),它的返回值是一個Set,Set集合里面存放的是Entry實(shí)體旦万,然后用for-each循環(huán)把集合里面所有的實(shí)體對象數(shù)據(jù)Entry拿出來:

如上所示闹击,HashMap拿出的鍵-值對無序,而Hashtable拿出來的有序成艘。

還有size()赏半、remove()、containsKey()狰腌、containsValue()除破、clear()等方法,使用如上琼腔。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市踱葛,隨后出現(xiàn)的幾起案子丹莲,更是在濱河造成了極大的恐慌,老刑警劉巖尸诽,帶你破解...
    沈念sama閱讀 206,311評論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件甥材,死亡現(xiàn)場離奇詭異,居然都是意外死亡性含,警方通過查閱死者的電腦和手機(jī)洲赵,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,339評論 2 382
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來商蕴,“玉大人叠萍,你說我怎么就攤上這事诈火〕蔷眨” “怎么了?”我有些...
    開封第一講書人閱讀 152,671評論 0 342
  • 文/不壞的土叔 我叫張陵成箫,是天一觀的道長格郁。 經(jīng)常有香客問我腹殿,道長独悴,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 55,252評論 1 279
  • 正文 為了忘掉前任锣尉,我火速辦了婚禮刻炒,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘自沧。我一直安慰自己坟奥,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 64,253評論 5 371
  • 文/花漫 我一把揭開白布暂幼。 她就那樣靜靜地躺著筏勒,像睡著了一般。 火紅的嫁衣襯著肌膚如雪旺嬉。 梳的紋絲不亂的頭發(fā)上管行,一...
    開封第一講書人閱讀 49,031評論 1 285
  • 那天,我揣著相機(jī)與錄音邪媳,去河邊找鬼捐顷。 笑死,一個胖子當(dāng)著我的面吹牛雨效,可吹牛的內(nèi)容都是我干的迅涮。 我是一名探鬼主播,決...
    沈念sama閱讀 38,340評論 3 399
  • 文/蒼蘭香墨 我猛地睜開眼徽龟,長吁一口氣:“原來是場噩夢啊……” “哼叮姑!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起据悔,我...
    開封第一講書人閱讀 36,973評論 0 259
  • 序言:老撾萬榮一對情侶失蹤传透,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后极颓,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體朱盐,經(jīng)...
    沈念sama閱讀 43,466評論 1 300
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 35,937評論 2 323
  • 正文 我和宋清朗相戀三年菠隆,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了兵琳。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 38,039評論 1 333
  • 序言:一個原本活蹦亂跳的男人離奇死亡骇径,死狀恐怖躯肌,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情既峡,我是刑警寧澤羡榴,帶...
    沈念sama閱讀 33,701評論 4 323
  • 正文 年R本政府宣布,位于F島的核電站运敢,受9級特大地震影響校仑,放射性物質(zhì)發(fā)生泄漏忠售。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,254評論 3 307
  • 文/蒙蒙 一迄沫、第九天 我趴在偏房一處隱蔽的房頂上張望稻扬。 院中可真熱鬧,春花似錦羊瘩、人聲如沸泰佳。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,259評論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽逝她。三九已至,卻和暖如春睬捶,著一層夾襖步出監(jiān)牢的瞬間黔宛,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 31,485評論 1 262
  • 我被黑心中介騙來泰國打工擒贸, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留臀晃,地道東北人。 一個月前我還...
    沈念sama閱讀 45,497評論 2 354
  • 正文 我出身青樓介劫,卻偏偏與公主長得像徽惋,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子座韵,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 42,786評論 2 345

推薦閱讀更多精彩內(nèi)容

  • 1. Java基礎(chǔ)部分 基礎(chǔ)部分的順序:基本語法险绘,類相關(guān)的語法,內(nèi)部類的語法誉碴,繼承相關(guān)的語法隆圆,異常的語法,線程的語...
    子非魚_t_閱讀 31,581評論 18 399
  • 2018-Read-Record 記錄我的2018學(xué)習(xí)歷程 譯者注:作為一個走心且有逼格的翻譯組翔烁,我們對本篇文章中...
    NinthDay閱讀 28,682評論 11 120
  • title: "Swift 中枚舉高級用法及實(shí)踐"date: 2015-11-20tags: [APPVENTUR...
    guoshengboy閱讀 2,559評論 0 2
  • 作者:Benedikt Terhechte,原文鏈接旨涝,原文日期:2015-10-17譯者:小鍋蹬屹,pmst;校對:s...
    梁杰_numbbbbb閱讀 917評論 1 11
  • 人不是被社會造就白华,而是人造就了社會慨默。 如果你不能坦然面對社會,還信誓旦旦的認(rèn)為是社會使自己埋沒弧腥,換個社會會很好厦取。那...
    我愛吃芝麻閱讀 282評論 0 1