集合(三)List

一、比較三個List實現(xiàn)類

同:三個類都是實現(xiàn)了List接口,存儲數(shù)據(jù)的特點相同:存儲有序的、可重復的數(shù)據(jù)

異:

ArrayList:是用的最多得氓英,線程不安全所以效率高。底層使用Object[] elementData數(shù)組存儲

LinkedList:對于平凡的插入鹦筹、刪除操作效率更高,因為底層是雙向鏈表(ArrayList的話要一個個移址貌,但是查找多還是

ArrayList好)

Vector:1.0的時候出的古老實現(xiàn)類铐拐,其他包括List本身都是1.2出的;線程安全效率慢练对,其他和ArrayList差不多底層也是數(shù)組遍蟋。接班不用

二、ArrayList和Vector源碼分析

ArrayList:

jdk7.0的時候:

ArrayList list = new ArrayList();//底層創(chuàng)建了長度是10的數(shù)組

當添加的元素數(shù)量超過數(shù)組容量了就擴容螟凭,默認情況下擴容1.5倍虚青,并復制到新數(shù)組里。(和StringBuilder很像)

建議開發(fā)中使用帶參數(shù)的構造器:

new ArrayList(int capacity)

jdk8.0的時候:

new ArrayList();//底層初始化為{}螺男,第一次add時才創(chuàng)建長度為10的數(shù)組棒厘,其他一樣

好處:延遲數(shù)組的創(chuàng)建,節(jié)省內(nèi)存

Vector:

如果沒給capacity一開始也初始化長度為10的數(shù)組(類ArrayList7.0)下隧,但是擴容的時候擴為原來的2倍

三奢人、LinkedList源碼分析

Linked list = new LinkedList();//內(nèi)部聲明了Node類型的first和last屬性,默認值為null

list.add(“something”);//創(chuàng)建node并將數(shù)據(jù)裝到node里

其中Node定義為:

//是linkedlist的一個內(nèi)部類

private static class Node<E>{

E item淆院;//數(shù)據(jù)

Node<E> next;

Node<E> prev;

Node(Node<E> prev,Node<E> next,Node<E> next){

this.item = element;

this.next = next;

this,prev = prev

}

}

四何乎、List方法

List除了從Collection集合繼承的方法外,List 集合里添加了一些根據(jù)索引來操作集合元素的方法。

void add(int index, Object ele):在index位置插入ele元素

boolean addAll(int index, Collection eles):從index位置開始將eles中的所有元素添加進來

Object get(int index):獲取指定index位置的元素

int indexOf(Object obj):返回obj在集合中首次出現(xiàn)的位置支救,找不到就-1

int lastIndexOf(Object obj):返回obj在當前集合中末次出現(xiàn)的位置抢野,找不到就-1

Object remove(int index):移除指定index位置的元素,并返回此元素

Object set(int index, Object ele):設置指定index位置的元素為ele

List subList(int fromIndex, int toIndex):返回從fromIndex到toIndex位置的子集合

總結常用方法:

增:add(Object)

刪:remove(Object)/remove(index)

改:set(index,Object)

查:get(index)

插入:add(index,Object)

長度:size()

遍歷:

1.iterator

?2.for(Object o : list)

?3.for(int i =0;i<list.size();i++)

最后編輯于
?著作權歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末各墨,一起剝皮案震驚了整個濱河市指孤,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌欲主,老刑警劉巖邓厕,帶你破解...
    沈念sama閱讀 217,406評論 6 503
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異扁瓢,居然都是意外死亡详恼,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,732評論 3 393
  • 文/潘曉璐 我一進店門引几,熙熙樓的掌柜王于貴愁眉苦臉地迎上來昧互,“玉大人,你說我怎么就攤上這事伟桅〕ň颍” “怎么了?”我有些...
    開封第一講書人閱讀 163,711評論 0 353
  • 文/不壞的土叔 我叫張陵楣铁,是天一觀的道長玖雁。 經(jīng)常有香客問我,道長盖腕,這世上最難降的妖魔是什么赫冬? 我笑而不...
    開封第一講書人閱讀 58,380評論 1 293
  • 正文 為了忘掉前任,我火速辦了婚禮溃列,結果婚禮上劲厌,老公的妹妹穿的比我還像新娘。我一直安慰自己听隐,他們只是感情好补鼻,可當我...
    茶點故事閱讀 67,432評論 6 392
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著雅任,像睡著了一般风范。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上沪么,一...
    開封第一講書人閱讀 51,301評論 1 301
  • 那天乌企,我揣著相機與錄音,去河邊找鬼成玫。 笑死加酵,一個胖子當著我的面吹牛拳喻,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播猪腕,決...
    沈念sama閱讀 40,145評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼冗澈,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了陋葡?” 一聲冷哼從身側響起亚亲,我...
    開封第一講書人閱讀 39,008評論 0 276
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎腐缤,沒想到半個月后捌归,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,443評論 1 314
  • 正文 獨居荒郊野嶺守林人離奇死亡岭粤,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,649評論 3 334
  • 正文 我和宋清朗相戀三年惜索,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片剃浇。...
    茶點故事閱讀 39,795評論 1 347
  • 序言:一個原本活蹦亂跳的男人離奇死亡巾兆,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出虎囚,到底是詐尸還是另有隱情角塑,我是刑警寧澤,帶...
    沈念sama閱讀 35,501評論 5 345
  • 正文 年R本政府宣布淘讥,位于F島的核電站圃伶,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏蒲列。R本人自食惡果不足惜留攒,卻給世界環(huán)境...
    茶點故事閱讀 41,119評論 3 328
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望嫉嘀。 院中可真熱鬧,春花似錦魄揉、人聲如沸剪侮。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,731評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽瓣俯。三九已至,卻和暖如春兵怯,著一層夾襖步出監(jiān)牢的瞬間彩匕,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 32,865評論 1 269
  • 我被黑心中介騙來泰國打工媒区, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留驼仪,地道東北人掸犬。 一個月前我還...
    沈念sama閱讀 47,899評論 2 370
  • 正文 我出身青樓,卻偏偏與公主長得像绪爸,于是被迫代替她去往敵國和親湾碎。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 44,724評論 2 354