List接口

1.1List接口概述

List接口特征:

1.數(shù)據(jù)存儲可重復(fù)

2有序,添加順序和保存順序一致

----| ArrayList<E>

可變長數(shù)組

-----| LinkedList<E>

雙向鏈表

---------| Vector

線程安全的可變長數(shù)組

1.2List常用方法

boolean add(E? e)葫盼;

List接口繼承Collection接口 add方法契沫,使用操作和Collection一致,并且這里采用的添加方式是【尾插法】

boolean add(int index 捺檬,E? e)椅邓;

List接口【特有方法】,在指定位置砖茸,添加指定元素

boolean addAll(Collection<? extends E > c);

List接口繼承Collection接口 addAll方法殴穴,使用操作和Collection一致,并且這里采用的添加方式是【尾插法】

boolean addAll( int index 货葬,Collection<? extends E > c)采幌;

List 接口【特有方法】,指定下標(biāo)位置震桶,添加另一個集合中所有內(nèi)容

E remove(int index)休傍;

List接口【特有·方法】,獲取指定下標(biāo)位置的元素

boolean remove (Object obj)蹲姐;

List 接口繼承Collection接口方法磨取,刪除集合中的指定元素

boolean removeAll(Collection<?> c);

List接口繼承Collection接口方法。刪除當(dāng)前集合中和參數(shù)集合重復(fù)元素

clear()柴墩;

List 接口繼承Collection幾口方法忙厌。清空整個集合中的所有元素

E set(int index,E e)江咳;

List接口【特有方法】逢净,使用指定元素替代指定下標(biāo)的元素,返回值是被替換的元素

int size ()歼指;

List 接口繼承Collection接口方法爹土。獲取集合中有效元素個數(shù)

boolean isEmpty();

List接口繼承Collection接口方法判斷當(dāng)前集合是否為空

boolean contains(Object obj)踩身;

List接口繼承Collection接口方法胀茵,判斷指定元素是否包含在當(dāng)前集合中

boolean containsAll(Collection<?> c);

List接口繼承Collection接口方法挟阻,判斷參數(shù)集合是不是在當(dāng)前集合的子集合

Object[] toArray()琼娘;

List接口繼承Collection接口方法呵哨。獲取當(dāng)前集合中所有元素Object數(shù)組

E get (int index);

List接口【特有方法】轨奄。獲取指定下標(biāo)對應(yīng)的元素

List<E> subList(intfromIndex孟害,int toIndex);

List接口【特有方法】挪拟。獲取當(dāng)前集合指定子集合挨务,從fromIndex開始到toIndex結(jié)束,

fromIndex <= 范圍 < toIndex

int indexOf(Object obj);

List接口【特有方法】玉组。獲取指定元素在集合中低依次出現(xiàn)的位置

int lastIndexOf(Object obj)谎柄;

List接口【特有方法】。獲取指定元素在集合中最后一次出現(xiàn)的位置

2.3List接口常用方法演示


package com.qfen.rxs;

import java.util.ArrayList;

import java.util.List;

public class Demo4 {

private void main() {

// TODO Auto-generated method stub

List<String> list = new ArrayList<String>();

list.add("wqe1");

list.add("121424");

list.add("wweqeq1");

list.add("1dad24");

System.out.println(list);

list.add(3, "1edqrdwf");

System.out.println(list);

List<String> list2 = new ArrayList<String>();

list2.add("1111");

list2.add("1211");

list2.add("1311");

list2.add("1411");

list.addAll(4,list);

System.out.println(list);

String remove = list.remove(1);

System.out.println(remove);

System.out.println(list);

list.removeIf((str) -> str.length() > 4);

System.out.println(list);

}

}

3ArrayList【重點】

3.1ArrayList概述

ArrayList是在java中集合非常重要的一個組裝惯雳,基于數(shù)組完成的數(shù)據(jù)結(jié)構(gòu)朝巫。課變長數(shù)組操作!J啊劈猿!

底層保存數(shù)據(jù)的是一個Object類型數(shù)組

ArrayList使用的方法都是List接口中的方法,有兩需要了解的成員方法

ensureCapacity()潮孽;

判斷方法用于確定當(dāng)前底層數(shù)組的容量是否滿足當(dāng)前操作需求

trimToSize()揪荣;

節(jié)省空間將底層數(shù)組的容量縮容致有效元素個數(shù)’

3.2細(xì)節(jié)問題


1. DEFAULT_CAPACITY 默認(rèn)容量 private static final int DEFAULT_CAPACITY = 10;

在調(diào)用ArrayList無參數(shù)構(gòu)造方法是,才會使用 DEFAULT_CAPACITY往史,作為底層Object數(shù)組的初始化容量仗颈。如果用 戶指定調(diào)用的是帶有初始化底層Object數(shù)組容量的構(gòu)造方法,會根 據(jù)用戶指定的容量創(chuàng)建對一個ArrayList集合椎例。

2為什么 - 8??? 因為在數(shù)組中存在很多屬性挨决,length只是眾多屬性中的一 個,在創(chuàng)建數(shù)組使用的過程中订歪,需要留有內(nèi)存空間用于保存數(shù)組中屬性脖祈。

3.3效率問題

ArrayList特征:

?增刪慢?

?增加慢?

?1. 數(shù)組當(dāng)前容量無法滿足添加操作,需要進行g(shù)row 擴容方法執(zhí)行陌粹,在擴容方 法中撒犀,存在數(shù)組創(chuàng)建,數(shù)組數(shù)據(jù)拷貝掏秩。非常浪費時 間或舞,而且浪費內(nèi)存。?

?2. 數(shù)組在添加數(shù)據(jù)的過程中蒙幻,存在在指定位置添加 元素映凳,從指定位置開始, 之后的元素整體向后移動邮破。?

刪除慢

?1. 刪除數(shù)據(jù)之后诈豌,從刪除位置開始仆救,之后的元素整 體向前移動,移動過程非 常浪費時間?

?2. 刪除操作會導(dǎo)致數(shù)據(jù)空間的浪費矫渔,內(nèi)存的浪費?

?查詢快

ArrayList底層是一個數(shù)組結(jié)構(gòu)彤蔽,在查詢操作的過程中, 是按照數(shù)組+下標(biāo)的方式 來操作對應(yīng)的元素庙洼,數(shù)組+下標(biāo)方式可以直接獲取對應(yīng)的空 間首地址顿痪,CPU訪問效率 極高

3.4【補充知識點,內(nèi)存地址】

內(nèi)存地址概念: [計算機原理] 計算機中為了更好的使用內(nèi)存油够,操作程序蚁袭,完成代碼。將內(nèi)存按 照小單位石咬,進行編號處理揩悄。 小單位: 字節(jié) byte 從編號為0內(nèi)存開始,到內(nèi)存的大值鬼悠。地址的展示方式是十六 進制删性。

3.5【補充 內(nèi)存地址對于cpu有什么關(guān)系】


快遞小哥我們可以看做是CPU,快遞上地址厦章,就是內(nèi)存地址镇匀,具 有唯一性!M嗫小!

代碼實際運行:? ? CPU就是根據(jù)內(nèi)存地址幸缕,可以直達(dá)內(nèi)存所在區(qū)域群发,執(zhí)行對應(yīng)代 碼。精準(zhǔn)而優(yōu)雅发乔,速度非呈旒耍快!栏尚!

3.6【補充 數(shù)組空間地址關(guān)系】


3.7【補充 null是什么】


null 是計算機中非常特殊的一塊內(nèi)存起愈。該內(nèi)存編號 0x0000 0000

該內(nèi)存受到系統(tǒng)保護? ?

?不只是電腦,包括手機译仗,iPad抬虽,智能設(shè)備,只要存在計算機基 本結(jié)構(gòu)的設(shè)備上都存在null 編號為0x0內(nèi)存纵菌。大小一個字節(jié)? ? 該內(nèi)存不能讀取任何數(shù)據(jù)阐污,也不能寫入任何數(shù)據(jù)一旦操作咱圆,程 序直接被系統(tǒng)殺死? ?Kill -9? ? ? ?

?一般用于引用數(shù)據(jù)類型的初始化笛辟,利用開發(fā)中關(guān)于null的異 常功氨,輔助找出代碼中的錯誤。? ? NullPointerException

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末手幢,一起剝皮案震驚了整個濱河市捷凄,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌围来,老刑警劉巖跺涤,帶你破解...
    沈念sama閱讀 212,029評論 6 492
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異管钳,居然都是意外死亡钦铁,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,395評論 3 385
  • 文/潘曉璐 我一進店門才漆,熙熙樓的掌柜王于貴愁眉苦臉地迎上來牛曹,“玉大人,你說我怎么就攤上這事醇滥±璞龋” “怎么了?”我有些...
    開封第一講書人閱讀 157,570評論 0 348
  • 文/不壞的土叔 我叫張陵鸳玩,是天一觀的道長阅虫。 經(jīng)常有香客問我,道長不跟,這世上最難降的妖魔是什么颓帝? 我笑而不...
    開封第一講書人閱讀 56,535評論 1 284
  • 正文 為了忘掉前任,我火速辦了婚禮窝革,結(jié)果婚禮上购城,老公的妹妹穿的比我還像新娘。我一直安慰自己虐译,他們只是感情好瘪板,可當(dāng)我...
    茶點故事閱讀 65,650評論 6 386
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著漆诽,像睡著了一般侮攀。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上厢拭,一...
    開封第一講書人閱讀 49,850評論 1 290
  • 那天兰英,我揣著相機與錄音,去河邊找鬼蚪腐。 笑死箭昵,一個胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的回季。 我是一名探鬼主播家制,決...
    沈念sama閱讀 39,006評論 3 408
  • 文/蒼蘭香墨 我猛地睜開眼正林,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了颤殴?” 一聲冷哼從身側(cè)響起觅廓,我...
    開封第一講書人閱讀 37,747評論 0 268
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎涵但,沒想到半個月后杈绸,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 44,207評論 1 303
  • 正文 獨居荒郊野嶺守林人離奇死亡矮瘟,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 36,536評論 2 327
  • 正文 我和宋清朗相戀三年瞳脓,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片澈侠。...
    茶點故事閱讀 38,683評論 1 341
  • 序言:一個原本活蹦亂跳的男人離奇死亡劫侧,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出哨啃,到底是詐尸還是另有隱情烧栋,我是刑警寧澤,帶...
    沈念sama閱讀 34,342評論 4 330
  • 正文 年R本政府宣布拳球,位于F島的核電站审姓,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏祝峻。R本人自食惡果不足惜魔吐,卻給世界環(huán)境...
    茶點故事閱讀 39,964評論 3 315
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望莱找。 院中可真熱鬧画畅,春花似錦、人聲如沸宋距。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,772評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽谚赎。三九已至,卻和暖如春诱篷,著一層夾襖步出監(jiān)牢的瞬間壶唤,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 32,004評論 1 266
  • 我被黑心中介騙來泰國打工棕所, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留闸盔,地道東北人。 一個月前我還...
    沈念sama閱讀 46,401評論 2 360
  • 正文 我出身青樓琳省,卻偏偏與公主長得像迎吵,于是被迫代替她去往敵國和親躲撰。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 43,566評論 2 349