List 總結(jié)

List?概述:

1泳秀、List :一個(gè)元素有序丐枉、可重復(fù)的集合娜睛。

集合中每個(gè)元素都有其對(duì)應(yīng)的順序索引。List 集合允許使用重復(fù)元素卦睹,可以通過索引來訪問指定位置的集合元素畦戒。下面示例是 List 的用法。

我們可以直接通過 add 方法添加元素结序,使用 add 方法的時(shí)候也可以根據(jù)索引值將數(shù)據(jù)插入特定位置障斋;可以通過 set 方法修改指定索引值位置的元素;可以獲取指定元素的索引值徐鹤。

2垃环、List是根據(jù) equals()方法的返回值是否為 true 來 判斷兩個(gè)對(duì)象是否相等。

當(dāng)我們通過 indexOf 方法獲取指定元素的索引值的時(shí)候返敬,List 是如何在集合內(nèi)找到我們傳入的元素對(duì)象的呢遂庄?換句話說,就是List 集合是如何判斷兩個(gè)元素是相等的呢劲赠?我們看下面這個(gè)例子:

類 E 中涛目,我們重寫了 equals()方法,直接返回 true凛澎。當(dāng)我們執(zhí)行 remove 方法的時(shí)候霹肝,List 會(huì)將集合中的元素作為參數(shù)傳給類 E 的 equals 方法。因?yàn)樵摲椒偸欠祷?true塑煎,所以每次都會(huì)刪除集合中第一個(gè)元素阿迈。

ArrayList:

a、ArrayList 是 List 的一個(gè)實(shí)現(xiàn)類轧叽,完全支持我們上面所說的 List 的用法苗沧。ArrayList 類是基于數(shù)組實(shí)現(xiàn)的,所以 ArrayList 封裝了一個(gè)動(dòng)態(tài)的炭晒、允許再分配的 Object[] 數(shù)組待逞。ArrayList 對(duì)象使用 initialCapacity 參數(shù)來設(shè)置該數(shù)組的長度。當(dāng)添加元素的數(shù)量超出了該數(shù)組的長度時(shí)网严,它們的 initialCapacity 會(huì)自動(dòng)增加识樱。

b、正常使用時(shí)震束,我們無需關(guān)系 ArrayList 的 initialCapacity怜庸。但是,如果我們需要向集合中添加大量元素的時(shí)候垢村,我們可以使用ensureCapacity(int minCapacity)一次添加 initialCapacity割疾,這樣做可以減少重分配次數(shù),提高性能嘉栓。

c宏榕、當(dāng)我們集合的元素?cái)?shù)量確定不再改變時(shí)拓诸,我們還可以使用 trimToSize()方法調(diào)整集合長度為當(dāng)前元素個(gè)數(shù),這樣我們可以減少集合對(duì)象占用的存儲(chǔ)空間麻昼。

d奠支、ArrayList 集合同樣是線程不安全的,多個(gè)線程同時(shí)操作一個(gè)集合時(shí)抚芦,我們需要手動(dòng)保證線程安全倍谜。可以使用 Collections 工具類叉抡。

LinkedList:

LinkedList 類是 List 的一個(gè)實(shí)現(xiàn)類枢劝,所以它是一個(gè) List 集合,可以通過索引來隨機(jī)訪問集合中的元素卜壕;同時(shí),它也實(shí)現(xiàn)了Deque 接口烙常,可以當(dāng)成雙端隊(duì)列使用轴捎。(Deque 代表一個(gè)“雙端隊(duì)列”,雙端隊(duì)列可以從兩端來添加刪除數(shù)據(jù)蚕脏,因此 Deque 的實(shí)現(xiàn)類既可以當(dāng)成隊(duì)列使用侦副,也可以當(dāng)成棧使用)。我們看下面的示例:

上面例子中驼鞭,我們分別使用了 List 集合秦驯、雙端隊(duì)列,棧的用法挣棕。首先译隘,我們通過 offer 方法,將元素 Jack 加入到隊(duì)列的尾部洛心;通過 push 方法將元素 Tom 加入到棧的頂部固耘;通過 offerFirst 方法將元素 Bruce 添加到隊(duì)列的頭部(相當(dāng)于棧的頂部)。然后词身,用 List 通過索引的方式遍歷集合厅目。之后依次展現(xiàn)訪問棧頂元素方法,訪問隊(duì)列最后一個(gè)元素方法法严,彈出棧頂方法损敷,訪問并刪除隊(duì)列最后一個(gè)元素方法。所以深啤,LinkedList 集合的用法還是很強(qiáng)大的拗馒。

ArrayList 的內(nèi)部是基于數(shù)組的集合的實(shí)現(xiàn)方式,LinkedList 內(nèi)部是以鏈表的形式來保存集合中的元素溯街,相對(duì)于數(shù)組的實(shí)現(xiàn)形式瘟忱,鏈表的形式在隨機(jī)訪問集合內(nèi)元素的時(shí)候性能較差奥额,但是插入和刪除元素性能比較好(只需改變指針?biāo)傅刂芳纯桑?/p>

List?總結(jié):

a、List 是一個(gè)線性表接口访诱,ArrayList 和 LinkedList 是線性表的兩種典型實(shí)現(xiàn):基于數(shù)組的線性表和基于鏈的線性表垫挨。一般來說,數(shù)組以一塊連續(xù)內(nèi)存區(qū)來保存所有的數(shù)組元素触菜,所以九榔,數(shù)組在隨機(jī)訪問時(shí)性能最好,所有內(nèi)部以數(shù)組作為底層實(shí)現(xiàn)的集合在隨機(jī)訪問的時(shí)候性能都比較好涡相;而內(nèi)部以鏈表作為底層實(shí)現(xiàn)的集合在執(zhí)行插入哲泊、刪除操作時(shí)性能比較好;但總體來說催蝗,ArrayList 的性能要比 LinkedList 的性能要好切威,因此我們優(yōu)先考慮使用 ArrayList。

b丙号、如果遍歷 List 集合先朦,對(duì)于 ArrayList,我們考慮使用隨機(jī)訪問(get 方法)遍歷犬缨,對(duì)于 LinkedList 考慮采用迭代器(Iterator)遍歷喳魏。

c、多個(gè)線程同時(shí)操作 List 集合的時(shí)候怀薛,我們需要手動(dòng)保證線程安全刺彩,可以使用工具類 Collections 將集合包裝成線程安全的集合。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末枝恋,一起剝皮案震驚了整個(gè)濱河市创倔,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌焚碌,老刑警劉巖三幻,帶你破解...
    沈念sama閱讀 217,084評(píng)論 6 503
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異呐能,居然都是意外死亡念搬,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,623評(píng)論 3 392
  • 文/潘曉璐 我一進(jìn)店門摆出,熙熙樓的掌柜王于貴愁眉苦臉地迎上來朗徊,“玉大人,你說我怎么就攤上這事偎漫∫遥” “怎么了?”我有些...
    開封第一講書人閱讀 163,450評(píng)論 0 353
  • 文/不壞的土叔 我叫張陵象踊,是天一觀的道長温亲。 經(jīng)常有香客問我棚壁,道長,這世上最難降的妖魔是什么栈虚? 我笑而不...
    開封第一講書人閱讀 58,322評(píng)論 1 293
  • 正文 為了忘掉前任袖外,我火速辦了婚禮,結(jié)果婚禮上魂务,老公的妹妹穿的比我還像新娘曼验。我一直安慰自己,他們只是感情好粘姜,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,370評(píng)論 6 390
  • 文/花漫 我一把揭開白布鬓照。 她就那樣靜靜地躺著,像睡著了一般孤紧。 火紅的嫁衣襯著肌膚如雪豺裆。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,274評(píng)論 1 300
  • 那天号显,我揣著相機(jī)與錄音臭猜,去河邊找鬼。 笑死咙轩,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的阴颖。 我是一名探鬼主播活喊,決...
    沈念sama閱讀 40,126評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼量愧!你這毒婦竟也來了钾菊?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 38,980評(píng)論 0 275
  • 序言:老撾萬榮一對(duì)情侶失蹤偎肃,失蹤者是張志新(化名)和其女友劉穎煞烫,沒想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體累颂,經(jīng)...
    沈念sama閱讀 45,414評(píng)論 1 313
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡滞详,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,599評(píng)論 3 334
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了紊馏。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片料饥。...
    茶點(diǎn)故事閱讀 39,773評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖朱监,靈堂內(nèi)的尸體忽然破棺而出岸啡,到底是詐尸還是另有隱情,我是刑警寧澤赫编,帶...
    沈念sama閱讀 35,470評(píng)論 5 344
  • 正文 年R本政府宣布巡蘸,位于F島的核電站奋隶,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏悦荒。R本人自食惡果不足惜唯欣,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,080評(píng)論 3 327
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望逾冬。 院中可真熱鬧黍聂,春花似錦、人聲如沸身腻。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,713評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽嘀趟。三九已至脐区,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間她按,已是汗流浹背牛隅。 一陣腳步聲響...
    開封第一講書人閱讀 32,852評(píng)論 1 269
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留酌泰,地道東北人媒佣。 一個(gè)月前我還...
    沈念sama閱讀 47,865評(píng)論 2 370
  • 正文 我出身青樓,卻偏偏與公主長得像陵刹,于是被迫代替她去往敵國和親默伍。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,689評(píng)論 2 354

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

  • 一.線性表 定義:零個(gè)或者多個(gè)元素的有限序列衰琐。也就是說它得滿足以下幾個(gè)條件:??①該序列的數(shù)據(jù)元素是有限的也糊。??②...
    Geeks_Liu閱讀 2,699評(píng)論 1 12
  • java筆記第一天 == 和 equals ==比較的比較的是兩個(gè)變量的值是否相等,對(duì)于引用型變量表示的是兩個(gè)變量...
    jmychou閱讀 1,497評(píng)論 0 3
  • 時(shí)光的沙漏羡宙,無法拾回狸剃。正如我們之間,永遠(yuǎn)都回不去了狗热。無論現(xiàn)實(shí)與夢境钞馁,我們?nèi)匀皇瞧叫芯€。 我們算是青梅竹馬匿刮,只不過不...
    V他不懂閱讀 631評(píng)論 5 2
  • 大一的自我介紹 大二的美好 大三的揮手再見 開始大笑 最后擁抱 酒紅了臉 話紅了臉 又是一年畢業(yè)季 得及感怕還沒...
    小阿姨吖閱讀 656評(píng)論 0 0
  • 最可惜的是 有些重要的人 和你一張合照都沒有 很久不聯(lián)系 思念卻隨著時(shí)間越來越重 無數(shù)次的相逢離別 卻不能給對(duì)方一...
    dc62b2eff58d閱讀 248評(píng)論 0 1