Java集合List的使用詳細解析
List簡單介紹
- 鑒于Java中數(shù)組用來存儲數(shù)據(jù)的局限性,我們通常使用java.util.List替代數(shù)組
- List集合類中元素有序、且可重復(fù),集合中的每個元素都有其對應(yīng)的順序索引。
- JDK API中List接口的實現(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中的所有元素添加進來
- 獲取元素
- 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在當前集合中末次出現(xiàn)的位置
- 刪除和替換元素
- Object remove(int index):移除指定index位置的元素,并返回此元素
- Object set(int index, Object ele):設(shè)置指定index位置的元素為ele
List接口主要實現(xiàn)類:ArrayList
- ArrayList 是 List 接口的主要實現(xiàn)類
- 本質(zhì)上,ArrayList是對象引用的一個”變長”數(shù)組
- Arrays.asList(…) 方法返回的 List 集合,既不是 ArrayList 實例,也不是 Vector 實例。 Arrays.asList(…) 返回值是一個固定長度的 List 集合
ArrayList底層是Object數(shù)組
特定:查找和添加效率高;刪除和插入的效率低。
List的實現(xiàn)類之二:LinkedList
對于頻繁的插入或刪除元素的操作,建議使用LinkedList類,效率較高。
這是由底層采用鏈表(雙向鏈表)結(jié)構(gòu)存儲數(shù)據(jù)決定的。
特有方法:
- void addFirst(Object obj)
- void addLast(Object obj)
- Object getFirst()
- Object getLast()
- Object removeFirst()
- Object removeLast()
List的實現(xiàn)類之三:Vector
- Vector 是一個古老的集合,JDK1.0就有了。大多數(shù)操作與ArrayList相同,區(qū)別之處在于Vector是線程安全的。
- 在各種List中,最好把ArrayList作為默認選擇。當插入、刪除頻繁時,使用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, 默認指的是索引,因為如果是值的話,還得進行裝箱
//裝箱有消耗
list.remove(2);
}

到此這篇關(guān)于Java集合List的使用詳細解析的文章就介紹到這了,更多相關(guān)List的使用內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
SpringBoot實現(xiàn)單點登錄的實現(xiàn)詳解
在現(xiàn)代的Web應(yīng)用程序中,單點登錄(Single?Sign-On)已經(jīng)變得越來越流行,在本文中,我們將使用Spring?Boot構(gòu)建一個基本的單點登錄系統(tǒng),需要的可以參考一下2023-05-05
Struts2實現(xiàn)對action請求對象的攔截操作方法
這篇文章主要介紹了Struts2實現(xiàn)對action請求對象的攔截操作方法,非常不錯,具有參考借鑒價值,需要的朋友可以參考下2017-11-11
Springboot基于Redisson實現(xiàn)Redis分布式可重入鎖源碼解析
這篇文章主要介紹了Springboot基于Redisson實現(xiàn)Redis分布式可重入鎖,本文通過案例源碼分析給大家介紹的非常詳細,對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下2022-03-03
MyBatis 注解操作與 XML 配置增刪改查全流程實現(xiàn)代碼
本文介紹了MyBatis,它是一款輕量級的持久層框架,能簡化JDBC冗余代碼,支持自定義SQL與對象映射,并兼顧開發(fā)效率與靈活性,通過實例代碼介紹了MyBatis 注解操作與 XML 配置增刪改查全流程實現(xiàn)代碼,感興趣的朋友一起看看吧2026-01-01
關(guān)于IDEA報錯Error:java 不支持發(fā)行版本17的原因及解決方案
在rebuild或運行項目時提示“Error:java: 錯誤: 不支持發(fā)行版本 17”,本文將給大家介紹了IDEA提示“Error:java: 錯誤: 不支持發(fā)行版本17”的原因及解決方案,需要的朋友可以參考下2023-09-09
Java上傳文件到服務(wù)器指定文件夾實現(xiàn)過程圖解
這篇文章主要介紹了Java上傳文件到服務(wù)器指定文件夾實現(xiàn)過程圖解,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下2020-08-08
詳解springmvc控制登錄用戶session失效后跳轉(zhuǎn)登錄頁面
本篇文章主要介紹了springmvc控制登錄用戶session失效后跳轉(zhuǎn)登錄頁面,session一旦失效就需要重新登陸,有興趣的同學(xué)可以了解一下。2017-01-01
Java基礎(chǔ)之List內(nèi)元素的排序性能對比
這篇文章主要介紹了Java基礎(chǔ)之List內(nèi)元素的排序性能對比,文中有非常詳細的代碼示例,對正在學(xué)習(xí)java基礎(chǔ)的小伙伴們有非常好的幫助,需要的朋友可以參考下2021-04-04

