JAVA:Set/List/Map 集合之List(二)

一非迹、List接口

1,List接口:存儲有序的纯趋,可以重復(fù)的元素.---相當(dāng)于“動態(tài)”數(shù)組

2憎兽,方法:刪除remove(int index) 修改set(int index,Object obj) 獲取get(int index)插入add(int index,Object obj)

3,添加進(jìn)List集合中的元素(或?qū)ο螅┧诘念愐欢ㄒ貙慹quals()方法

ArrayList(主要的實(shí)現(xiàn)類)

LinkedList(更適用于頻繁的插入吵冒、刪除操作)

Vector(古老的實(shí)現(xiàn)類纯命、線程安全的,但效率要低于ArrayList)

二痹栖、ArraList

1亿汞,ArrayList類支持3個(gè)構(gòu)造方法。

//1揪阿,Arraylist() 這個(gè)構(gòu)造方法構(gòu)造了一個(gè)空的鏈表

List list1 =new ArrayList();

// 2疗我,ArrayList(Collection<? extends E> c) 這個(gè)構(gòu)造方法構(gòu)造了一個(gè)包含指定元素集合的鏈表,字符E表示集合中元素的類型。

ArrayList list2 =new ArrayList();

//3,ArrayList(int initialCapacity) 構(gòu)造了一個(gè)指定大小但內(nèi)容為空的鏈表图甜。initialCapacity參數(shù)就是初始容量大小碍粥。

ArrayList list3 =new ArrayList(7);

注意:ArrayList類只支持對象類型,不支持 基礎(chǔ)數(shù)據(jù)類型黑毅。就是說ArrayList對象只能存放對象嚼摩,不能存放基礎(chǔ)數(shù)據(jù)類型的數(shù)據(jù)。

2矿瘦,ArrayList常用方法

增加元素到鏈表中

boolean add(Element e)? // 增加指定元素到鏈表尾部.

void add(int index, Element e) // 第一位是0? 增加指定元素到鏈表指定位置.

從鏈表中刪除元素

void clear()? //從鏈表中刪除所有元素.

E remove(int index)? // 刪除鏈表中指定位置的元素.

protected void removeRange(int start, int end) // 刪除鏈表中從某一個(gè)位置開始到某一個(gè)位置結(jié)束的元素枕面。

獲取鏈表中的元素

E get(int index)

獲取鏈表中指定位置處的元素.

Object[] toArray()

獲取一個(gè)數(shù)組,數(shù)組中所有元素是鏈表中的元素.(即將鏈表轉(zhuǎn)換為一個(gè)數(shù)組)

修改某個(gè)元素

E set(int index, E element)

將鏈表中指定位置上的元素替換成新元素缚去。

搜索元素

boolean contains(Object o)

如果鏈表包含指定元素潮秘,返回true.

int indexOf(Object o)

返回元素在鏈表中第一次出現(xiàn)的位置,如果返回-1易结,表示鏈表中沒有這個(gè)元素枕荞。

int lastIndexOf(Object o)

返回元素在鏈表中最后一次出現(xiàn)的位置,如果返回-1搞动,表示鏈表中沒有這個(gè)元素躏精。

檢查鏈表是否為空

boolean isEmpty()

返回true表示鏈表中沒有任何元素.

獲取鏈表大小

int size()

返回鏈表長度(鏈表包含元素的個(gè)數(shù)).

3,循環(huán)遍歷數(shù)組

ArrayList list =new ArrayList();

// 遍歷arraylist中的元素

// 第1種方法: 循環(huán)使用元素的索引和鏈表的大小

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

System.out.println("Index: " + i +" - Item: " + list.get(i));

}

// 第2種方法:使用foreach循環(huán)

for (String str : list) {

System.out.println("Item is: " + str);

}

// 第3種方法:使用迭代器

// hasNext(): 返回true表示鏈表鏈表中還有元素

// next(): 返回下一個(gè)元素

for (Iterator it = list.iterator(); it.hasNext();) {

System.out.println("Item is: " + it.next());

}


三鹦肿、LinkedList

1,LinkedList簡介

LinkedList 是一個(gè)繼承于AbstractSequentialList的雙向鏈表矗烛。它也可以被當(dāng)作堆棧、隊(duì)列或雙端隊(duì)列進(jìn)行操作箩溃。

LinkedList 實(shí)現(xiàn) List 接口瞭吃,能對它進(jìn)行隊(duì)列操作碌嘀。

LinkedList 實(shí)現(xiàn) Deque 接口,即能將LinkedList當(dāng)作雙端隊(duì)列使用歪架。

LinkedList 實(shí)現(xiàn)了Cloneable接口股冗,即覆蓋了函數(shù)clone(),能克隆牡拇。

LinkedList 實(shí)現(xiàn)java.io.Serializable接口魁瞪,這意味著LinkedList支持序列化,能通過序列化去傳輸惠呼。

2导俘,構(gòu)造函數(shù)

// 默認(rèn)構(gòu)造函數(shù)

LinkedList()

// 創(chuàng)建一個(gè)LinkedList,保護(hù)Collection中的全部元素剔蹋。

LinkedList(Collection collection)

3旅薄,基本方法

boolean? ? ? add(E object)

void? ? ? ? ? add(int location, E object)? 在指定位置插入一個(gè)元素。

boolean? ? ? addAll(Collection<? extends E> collection)

boolean? ? ? addAll(int location, Collection<? extends E> collection)

void? ? ? ? ? addFirst(E object)? 在鏈表頭部插入一個(gè)元素泣崩。

void? ? ? ? ? addLast(E object)? 在鏈表尾部添加一個(gè)元素少梁。

void? ? ? ? ? clear()

Object? ? ? ? clone()

boolean? ? ? contains(Object object)

Iterator<E>? descendingIterator()

E? ? ? ? ? ? element()

E? ? ? ? ? ? get(int location)? 從當(dāng)前鏈表中獲取指定位置的元素。

E? ? ? ? ? ? getFirst()? 從當(dāng)前鏈表中獲取第一個(gè)元素矫付。

E? ? ? ? ? ? getLast()? 從當(dāng)前鏈表中獲取最后一個(gè)元素凯沪。

int? ? ? ? ? indexOf(Object object)

int? ? ? ? ? lastIndexOf(Object object)

ListIterator<E>? ? listIterator(int location)

boolean? ? ? offer(E o)

boolean? ? ? offerFirst(E e)

boolean? ? ? offerLast(E e)

E? ? ? ? ? ? peek()

E? ? ? ? ? ? peekFirst()

E? ? ? ? ? ? peekLast()

E? ? ? ? ? ? poll()

E? ? ? ? ? ? pollFirst()

E? ? ? ? ? ? pollLast()

E? ? ? ? ? ? pop()

void? ? ? ? ? push(E e)

E? ? ? ? ? ? remove()? 從當(dāng)前鏈表中移除指定的元素。

E? ? ? ? ? ? remove(int location) 從當(dāng)前鏈表中移除指定位置的元素买优。

boolean? ? ? remove(Object object)

E? ? ? ? ? ? removeFirst()

boolean? ? ? removeFirstOccurrence(Object o)

E? ? ? ? ? ? removeLast()

boolean? ? ? removeLastOccurrence(Object o)

E? ? ? ? ? ? set(int location, E object)

int? ? ? ? ? size()

<T> T[]? ? ? toArray(T[] contents)

Object[]? ? toArray()

4妨马、遍歷

// 默認(rèn)構(gòu)造函數(shù)LinkedList()

List list =new LinkedList<>();

list.add("1");

list.add("2");

//第一種,通過迭代器遍歷杀赢。即通過Iterator去遍歷烘跺。

for(Iterator iter = list.iterator(); iter.hasNext();){

String t= (String) iter.next();

}

//第二種 通過快速隨機(jī)訪問遍歷LinkedList

int size = list.size();

for (int i=0; i

String t =(String)list.get(i);

}

//第三種 通過另外一種for循環(huán)來遍歷LinkedList

for (String t:list){

System.out.println(t);

}

四、Vector

1脂崔,簡介

Vector 可實(shí)現(xiàn)自動增長的對象數(shù)組滤淳。

java.util.vector提供了向量類(Vector)以實(shí)現(xiàn)類似動態(tài)數(shù)組的功能。

創(chuàng)建了一個(gè)向量類的對象后砌左,可以往其中隨意插入不同類的對象脖咐,即不需顧及類型也不需預(yù)先選定向量的容量,并可以方便地進(jìn)行查找汇歹。

對于預(yù)先不知或者不愿預(yù)先定義數(shù)組大小屁擅,并且需要頻繁地進(jìn)行查找,插入秤朗,刪除工作的情況,可以考慮使用向量類笔喉。

2取视,構(gòu)造方法:?

public vector()?

publicvector(intinitialcapacity,int capacityIncrement)?

publicvector(intinitialcapacity)

使用第一種方法系統(tǒng)會自動對向量進(jìn)行管理硝皂,若使用后兩種方法,則系統(tǒng)將根據(jù)參數(shù)作谭,initialcapacity設(shè)定向量對象的容量(即向量對象可存儲數(shù)據(jù)的大谢铩),當(dāng)真正存放的數(shù)據(jù)個(gè)數(shù)超過容量時(shí)折欠。系統(tǒng)會擴(kuò)充向量對象存儲容量贝或。

參數(shù)capacityincrement給定了每次擴(kuò)充的擴(kuò)充值。當(dāng)capacityincrement為0的時(shí)候锐秦,則每次擴(kuò)充一倍咪奖,利用這個(gè)功能可以優(yōu)化存儲。

3酱床,基本方法

插入功能

(1)adddElement(Object obj)??將obj插入向量的尾部羊赵。obj可以是任何類型的對象。對同一個(gè)向量對象扇谣,亦可以在其中插入不同類的對象昧捷。但插入的應(yīng)是對象而不是數(shù)值,所以插入數(shù)值時(shí)要注意將數(shù)組轉(zhuǎn)換成相應(yīng)的對象罐寨。

例如:要插入整數(shù)1時(shí)靡挥,不要直接調(diào)用v1.addElement(1),正確的方法為:

Vector v1 =new Vector();

Integer integer1 =newInteger(1);

v1.addElement(integer1);

(2)setElementAt(Object obj,int index)? ? 將index處的對象設(shè)置成obj,原來的對象將被覆蓋鸯绿。?

(3)?insertElementAt(Object obj,int index)? ? 在index指定的位置插入obj跋破,原來對象以及此后的對象依次往后順延。

刪除功能:?

(1) void removeElement(Object obj)

從向量中刪除obj,若有多個(gè)存在楞慈,則從向量頭開始試幔烛,刪除找到的第一個(gè)與obj相同的向量成員。

(2)? void removeAllElement(); 刪除向量所有的對象

(3)? void removeElementAt(int index)? 刪除index所指的地方的對象

查詢搜索功能:?

(1)int indexOf(Object obj) 從向量頭開始搜索obj,返回所遇到的第一個(gè)obj對應(yīng)的下標(biāo)囊蓝,若不存在此obj,返回-1.

(2) int indexOf(Object obj,int index)? 從index所表示的下標(biāo)處開始搜索obj.

(3) int lastindexOf(Object obj) 從向量尾部開始逆向搜索obj.

(4) int lastIndex(Object obj,int index) 從index所表示的下標(biāo)處由尾至頭逆向搜索obj.

(5)synchornized firstElement()? 獲取向量對象中的首個(gè)obj

(6)Object lastElement()? 獲取向量對象的最后一個(gè)obj

4饿悬,遍歷

Vector hs =new Vector();

hs.add("aa");

hs.add("bb");

//第一種方法

Iterator iterator = hs.iterator();

while (iterator.hasNext()) {

System.out.println(iterator.next());

}

//第二種方法

Enumeration elements = hs.elements();

while (elements.hasMoreElements()) {

System.out.println(elements.nextElement());

}

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市聚霜,隨后出現(xiàn)的幾起案子狡恬,更是在濱河造成了極大的恐慌,老刑警劉巖蝎宇,帶你破解...
    沈念sama閱讀 218,036評論 6 506
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件弟劲,死亡現(xiàn)場離奇詭異,居然都是意外死亡姥芥,警方通過查閱死者的電腦和手機(jī)兔乞,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,046評論 3 395
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人庸追,你說我怎么就攤上這事霍骄。” “怎么了淡溯?”我有些...
    開封第一講書人閱讀 164,411評論 0 354
  • 文/不壞的土叔 我叫張陵读整,是天一觀的道長。 經(jīng)常有香客問我咱娶,道長米间,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,622評論 1 293
  • 正文 為了忘掉前任膘侮,我火速辦了婚禮屈糊,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘喻喳。我一直安慰自己另玖,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,661評論 6 392
  • 文/花漫 我一把揭開白布表伦。 她就那樣靜靜地躺著谦去,像睡著了一般。 火紅的嫁衣襯著肌膚如雪蹦哼。 梳的紋絲不亂的頭發(fā)上鳄哭,一...
    開封第一講書人閱讀 51,521評論 1 304
  • 那天,我揣著相機(jī)與錄音纲熏,去河邊找鬼妆丘。 笑死,一個(gè)胖子當(dāng)著我的面吹牛局劲,可吹牛的內(nèi)容都是我干的勺拣。 我是一名探鬼主播,決...
    沈念sama閱讀 40,288評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼鱼填,長吁一口氣:“原來是場噩夢啊……” “哼药有!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起苹丸,我...
    開封第一講書人閱讀 39,200評論 0 276
  • 序言:老撾萬榮一對情侶失蹤愤惰,失蹤者是張志新(化名)和其女友劉穎,沒想到半個(gè)月后赘理,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體宦言,經(jīng)...
    沈念sama閱讀 45,644評論 1 314
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,837評論 3 336
  • 正文 我和宋清朗相戀三年商模,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了奠旺。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片蜘澜。...
    茶點(diǎn)故事閱讀 39,953評論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖响疚,靈堂內(nèi)的尸體忽然破棺而出兼都,到底是詐尸還是另有隱情,我是刑警寧澤稽寒,帶...
    沈念sama閱讀 35,673評論 5 346
  • 正文 年R本政府宣布,位于F島的核電站趟章,受9級特大地震影響杏糙,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜蚓土,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,281評論 3 329
  • 文/蒙蒙 一宏侍、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧蜀漆,春花似錦谅河、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,889評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至鲜侥,卻和暖如春褂始,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背描函。 一陣腳步聲響...
    開封第一講書人閱讀 33,011評論 1 269
  • 我被黑心中介騙來泰國打工崎苗, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人舀寓。 一個(gè)月前我還...
    沈念sama閱讀 48,119評論 3 370
  • 正文 我出身青樓胆数,卻偏偏與公主長得像,于是被迫代替她去往敵國和親互墓。 傳聞我的和親對象是個(gè)殘疾皇子必尼,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,901評論 2 355

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