Java核心技術(shù)卷一 集合類(lèi)




首先补鼻,在Java中類(lèi)庫(kù)將接口(Interface)與實(shí)現(xiàn)(implementation)分離的饰躲。

所以主要的集合類(lèi)中首先分成兩大類(lèi)

一個(gè)是實(shí)現(xiàn)了Collection接口的集合類(lèi)其中包括三大類(lèi):

一铜涉、List? //這個(gè)集合類(lèi)是有序的纽谒,可重復(fù)的容器

(Java中的鏈表都是雙向鏈接的,意味著可以向后也可以向前遍歷和操作萨西,next/previous有鹿、hasNext/hasPrevious)

而在List中又分為

??? LinkedList--雙向鏈表,可以快速在中間添加原杂,插入印颤,刪除推薦使用add,remove。

??? ArrayList--使用循環(huán)數(shù)組實(shí)現(xiàn)的隊(duì)列穿肄,在進(jìn)行隨機(jī)訪(fǎng)問(wèn)的時(shí)候可以選擇它或者是數(shù)組年局,推薦使用get( ),和set( )。

二咸产、Set? //add拒絕重復(fù)元素

其中含有hashSet,是基于散列表的集矢否,遍歷時(shí)元素出現(xiàn)的順序并不是固定的。

還有TreeSet脑溢,這是一個(gè)有序集合僵朗,而且這個(gè)排序使用樹(shù)排序(紅黑樹(shù))進(jìn)行的。

三屑彻、Queue? //這是隊(duì)列

有Queue和LinkedList都是雙端隊(duì)列验庙。

還有優(yōu)先隊(duì)列priority queue,使用的是堆排序來(lái)進(jìn)行其中元素的排序社牲,并且remove這些方法都是按照其中的元素順序執(zhí)行

其中接口有兩個(gè)基本方法(還有其他粪薛,咱不提)

四、stack 棧結(jié)構(gòu)

一搏恤、boolean add(E element)

? 這是往實(shí)現(xiàn)了Collention接口的集合類(lèi)中添加元素违寿,一旦添加成功則返回true。

二熟空、Iterator<T> iterator()

? 這是迭代器藤巢,實(shí)現(xiàn)了Collention接口的集合類(lèi)中會(huì)提供一個(gè)迭代器,來(lái)讓你可以方便的遍歷集合中的元素息罗。

? 同時(shí)這個(gè)也是接口Iterable中需要實(shí)現(xiàn)的方法掂咒。只要實(shí)現(xiàn)了這個(gè)方法,就可以用for(E element: e)來(lái)遍歷實(shí)現(xiàn)了這個(gè)方法的集合迈喉。這個(gè)for循環(huán)默認(rèn)的使用迭代器來(lái)為我們遍歷其中的所有元素俏扩。

? 另外還有一個(gè)Iterator的接口,其中就有提供給我們對(duì)集合中的元素進(jìn)行操作的方法

E next()弊添、boolean hasNext()录淡、void remove()

迭代器是類(lèi)似于指向集合中邏輯位置相鄰兩個(gè)對(duì)象之間的位置,無(wú)論你使用(正向遍歷油坝,從第一個(gè)元素到最后一個(gè))add嫉戚,next刨裆,remove,他都是最迭代器所指的地方上一個(gè)對(duì)象彬檀。

? 而且這三個(gè)方法互相有關(guān)聯(lián)帆啃。在遍歷下一個(gè)元素時(shí)(使用next())時(shí),必須要先對(duì)是否存在下一個(gè)元素進(jìn)行判斷窍帝,否則當(dāng)已經(jīng)遍歷到最后一個(gè)元素并且再次進(jìn)行next時(shí)就會(huì)出現(xiàn)Exception努潘。而當(dāng)使用remove時(shí),必須要使用next坤学。由于我們知道迭代器指向的是對(duì)象之間并且進(jìn)行上一個(gè)對(duì)象的操作疯坤,若是一開(kāi)始就進(jìn)行remove操作,萬(wàn)一迭代器在指向第一個(gè)元素之前那么就會(huì)出現(xiàn)對(duì)不存在的元素進(jìn)行remove操作深浮。所以即使是邏輯之間相鄰的元素進(jìn)行刪除压怠,也不能連續(xù)使用remove操作。

?

? 另一個(gè)是實(shí)現(xiàn)了Map接口的集合類(lèi)

? Map(映射表)主要是用于鍵值對(duì)(Key-value)的存儲(chǔ)集合類(lèi)飞苇,鍵key一般是以字符串為準(zhǔn)

菌瘫,其中有hashMap(根據(jù)鍵的內(nèi)容進(jìn)行hash(散列)且鍵必須唯一,不對(duì)值進(jìn)行散列布卡。)雨让,和TreeMap。還有個(gè)WeakHashMap忿等,他的作用是當(dāng)對(duì)鍵的唯一引用來(lái)自散列表?xiàng)l目時(shí)宫患,這一數(shù)據(jù)結(jié)構(gòu)會(huì)與垃圾回收機(jī)制協(xié)同工作刪除鍵/值對(duì)

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市这弧,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌虚汛,老刑警劉巖匾浪,帶你破解...
    沈念sama閱讀 211,639評(píng)論 6 492
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異卷哩,居然都是意外死亡蛋辈,警方通過(guò)查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,277評(píng)論 3 385
  • 文/潘曉璐 我一進(jìn)店門(mén)将谊,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)冷溶,“玉大人,你說(shuō)我怎么就攤上這事尊浓〕哑担” “怎么了?”我有些...
    開(kāi)封第一講書(shū)人閱讀 157,221評(píng)論 0 348
  • 文/不壞的土叔 我叫張陵栋齿,是天一觀(guān)的道長(zhǎng)苗胀。 經(jīng)常有香客問(wèn)我襟诸,道長(zhǎng),這世上最難降的妖魔是什么基协? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 56,474評(píng)論 1 283
  • 正文 為了忘掉前任歌亲,我火速辦了婚禮,結(jié)果婚禮上澜驮,老公的妹妹穿的比我還像新娘陷揪。我一直安慰自己,他們只是感情好杂穷,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,570評(píng)論 6 386
  • 文/花漫 我一把揭開(kāi)白布悍缠。 她就那樣靜靜地躺著,像睡著了一般亭畜。 火紅的嫁衣襯著肌膚如雪扮休。 梳的紋絲不亂的頭發(fā)上,一...
    開(kāi)封第一講書(shū)人閱讀 49,816評(píng)論 1 290
  • 那天拴鸵,我揣著相機(jī)與錄音玷坠,去河邊找鬼。 笑死劲藐,一個(gè)胖子當(dāng)著我的面吹牛八堡,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播聘芜,決...
    沈念sama閱讀 38,957評(píng)論 3 408
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼兄渺,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來(lái)了汰现?” 一聲冷哼從身側(cè)響起挂谍,我...
    開(kāi)封第一講書(shū)人閱讀 37,718評(píng)論 0 266
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎瞎饲,沒(méi)想到半個(gè)月后口叙,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 44,176評(píng)論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡嗅战,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,511評(píng)論 2 327
  • 正文 我和宋清朗相戀三年妄田,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片驮捍。...
    茶點(diǎn)故事閱讀 38,646評(píng)論 1 340
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡疟呐,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出东且,到底是詐尸還是另有隱情启具,我是刑警寧澤,帶...
    沈念sama閱讀 34,322評(píng)論 4 330
  • 正文 年R本政府宣布珊泳,位于F島的核電站富纸,受9級(jí)特大地震影響囤踩,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜晓褪,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,934評(píng)論 3 313
  • 文/蒙蒙 一堵漱、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧涣仿,春花似錦勤庐、人聲如沸。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 30,755評(píng)論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)。三九已至钧汹,卻和暖如春丈探,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背拔莱。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 31,987評(píng)論 1 266
  • 我被黑心中介騙來(lái)泰國(guó)打工碗降, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人塘秦。 一個(gè)月前我還...
    沈念sama閱讀 46,358評(píng)論 2 360
  • 正文 我出身青樓讼渊,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國(guó)和親尊剔。 傳聞我的和親對(duì)象是個(gè)殘疾皇子爪幻,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,514評(píng)論 2 348

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

  • 概述 Java集合框架由Java類(lèi)庫(kù)的一系列接口、抽象類(lèi)以及具體實(shí)現(xiàn)類(lèi)組成须误。我們這里所說(shuō)的集合就是把一組對(duì)象組織到...
    absfree閱讀 1,251評(píng)論 0 10
  • Collection ├List │├LinkedList │├ArrayList │└Vector │└Stac...
    AndyZX閱讀 870評(píng)論 0 1
  • java筆記第一天 == 和 equals ==比較的比較的是兩個(gè)變量的值是否相等挨稿,對(duì)于引用型變量表示的是兩個(gè)變量...
    jmychou閱讀 1,488評(píng)論 0 3
  • 1.Java集合框架是什么?說(shuō)出一些集合框架的優(yōu)點(diǎn)京痢? 每種編程語(yǔ)言中都有集合奶甘,最初的Java版本包含幾種集合類(lèi):V...
    胖先森閱讀 808評(píng)論 4 17
  • 文/玥姝 01.襯衣 襯衣兼具中性、干練船庇、素凈和優(yōu)雅的風(fēng)格吭产。 對(duì)于我們大學(xué)生,推薦格子襯衣或帶有圖案的襯衣鸭轮,這樣更...
    玥姝閱讀 2,297評(píng)論 10 59