Java集合List的使用詳細(xì)解析
List簡(jiǎn)單介紹
- 鑒于Java中數(shù)組用來存儲(chǔ)數(shù)據(jù)的局限性,我們通常使用java.util.List替代數(shù)組
- List集合類中元素有序、且可重復(fù),集合中的每個(gè)元素都有其對(duì)應(yīng)的順序索引。
- JDK API中List接口的實(shí)現(xiàn)類常用的有:ArrayList、LinkedList和Vector。
List接口方法
List除了從Collection集合繼承的方法外,List 集合里添加了一些根據(jù)索引來操作集合元素的方法。
- 插入元素
- void add(int index, Object ele):在index位置插入ele元素
- boolean addAll(int index, Collection eles):從index位置開始將eles中的所有元素添加進(jìn)來
- 獲取元素
- Object get(int index):獲取指定index位置的元素
- List subList(int fromIndex, int toIndex):返回從fromIndex到toIndex位置的子集合
- 獲取元素索引
- int indexOf(Object obj):返回obj在集合中首次出現(xiàn)的位置
- int lastIndexOf(Object obj):返回obj在當(dāng)前集合中末次出現(xiàn)的位置
- 刪除和替換元素
- Object remove(int index):移除指定index位置的元素,并返回此元素
- Object set(int index, Object ele):設(shè)置指定index位置的元素為ele
List接口主要實(shí)現(xiàn)類:ArrayList
- ArrayList 是 List 接口的主要實(shí)現(xiàn)類
- 本質(zhì)上,ArrayList是對(duì)象引用的一個(gè)”變長(zhǎng)”數(shù)組
- Arrays.asList(…) 方法返回的 List 集合,既不是 ArrayList 實(shí)例,也不是 Vector 實(shí)例。 Arrays.asList(…) 返回值是一個(gè)固定長(zhǎng)度的 List 集合
ArrayList底層是Object數(shù)組
特定:查找和添加效率高;刪除和插入的效率低。
List的實(shí)現(xiàn)類之二:LinkedList
對(duì)于頻繁的插入或刪除元素的操作,建議使用LinkedList類,效率較高。
這是由底層采用鏈表(雙向鏈表)結(jié)構(gòu)存儲(chǔ)數(shù)據(jù)決定的。
特有方法:
- void addFirst(Object obj)
- void addLast(Object obj)
- Object getFirst()
- Object getLast()
- Object removeFirst()
- Object removeLast()
List的實(shí)現(xiàn)類之三:Vector
- Vector 是一個(gè)古老的集合,JDK1.0就有了。大多數(shù)操作與ArrayList相同,區(qū)別之處在于Vector是線程安全的。
- 在各種List中,最好把ArrayList作為默認(rèn)選擇。當(dāng)插入、刪除頻繁時(shí),使用LinkedList;Vector總是比ArrayList慢,所以盡量避免使用。
特有方法:
- void addElement(Object obj)
- void insertElementAt(Object obj,int index)
- void setElementAt(Object obj,int index)
- void removeElement(Object obj)
- void removeAllElements()
面試題
以下代碼輸出結(jié)果為?
@Test public void testListRemove() { List list = new ArrayList(); list.add(1); list.add(2); list.add(3); updateList(list); System.out.println(list); } private static void updateList(List list) { //這里的參數(shù)2, 默認(rèn)指的是索引,因?yàn)槿绻侵档脑?,還得進(jìn)行裝箱 //裝箱有消耗 list.remove(2); }
到此這篇關(guān)于Java集合List的使用詳細(xì)解析的文章就介紹到這了,更多相關(guān)List的使用內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
springboot項(xiàng)目配置logback-spring.xml實(shí)現(xiàn)按日期歸檔日志的方法
本文主要介紹了springboot項(xiàng)目配置logback-spring.xml實(shí)現(xiàn)按日期歸檔日志的方法,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2024-08-08SpringBoot使用Feign進(jìn)行服務(wù)間通信的實(shí)現(xiàn)示例代碼
Feign是一個(gè)開源的Java HTTP客戶端,可以幫助我們?cè)赟pringBoot應(yīng)用中快速構(gòu)建和使用HTTP客戶端,方便實(shí)現(xiàn)服務(wù)間的通信,本文就來介紹一下SpringBoot使用Feign進(jìn)行服務(wù)間通信的實(shí)現(xiàn)示例代碼,感興趣的可以了解一下2024-01-01Java?離線中文語(yǔ)音文字識(shí)別功能的實(shí)現(xiàn)代碼
這篇文章主要介紹了Java?離線中文語(yǔ)音文字識(shí)別,本次使用springboot?+maven實(shí)現(xiàn),官方demo為springboot+gradle,結(jié)合實(shí)例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2022-07-07微服務(wù)通過Feign調(diào)用進(jìn)行密碼安全認(rèn)證操作
這篇文章主要介紹了微服務(wù)通過Feign調(diào)用進(jìn)行密碼安全認(rèn)證操作,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2021-06-06Maven插件構(gòu)建Docker鏡像的實(shí)現(xiàn)步驟
這篇文章主要介紹了Maven插件構(gòu)建Docker鏡像的實(shí)現(xiàn)步驟,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2019-10-10