Java集合(4)--List接口及其实现类ArrayList、LinkedList和Vector
文章目錄
- List接口概述
- List接口常用方法
- ArrayList實現類
- LinkedList實現類
- Vector實現類
List接口概述
List集合類中元素有序、且可重復,集合中的每個元素都有其對應的順序索引
List容器中的元素都對應一個整數型的序號記載其在容器中的位置,可以根據
序號存取容器中的元素
List接口的實現類有:ArrayList、LinkedList和Vector
List接口常用方法
List除了從Collection集合繼承的方法外,List 集合里添加了一些根據索引來操作集合元素的方法。
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在集合中首次出現的位置
int lastIndexOf(Object obj):返回obj在當前集合中末次出現的位置
Object remove(int index):移除指定index位置的元素,并返回此元素
Object set(int index, Object ele):設置指定index位置的元素為ele
List subList(int fromIndex, int toIndex):返回[fromIndex,toIndex)處的子集合
ArrayList實現類
線程不安全,效率較高。底層使用數組進行存儲。進行查找、末尾添加等操作相對較多的數據通常采用ArrayList實現類。
JDK1.7(類似于單例中餓漢式)
ArrayList list = new ArrayList(); //無參構造器,底層創建了長度為10的Object[]數組elementData list.add(123); //elementData[0] = new Integer(123); ... list.add(11); //如果此次的添加導致底層elementData數組容量不夠,則會擴容,默認情況下擴容為原來的1.5倍,同時將原有的數組中的數據復制過去//有參構造器 ArrayList listTwo = new ArrayList(int capacity);JDK1.8(類似于單例中懶漢式)
ArrayList list = new ArrayList(); //無參構造器,底層Object[] elementData初始化為{},即還沒有創建長度為10的數組 list.add(123); //第一次調用add()時,底層才創建長度為10的數組 //其余與JDK1.7一樣注意:Arrays.asList(…)方法返回的 List 集合,既不是 ArrayList 實例,也不是
Vector 實例。Arrays.asList(…)返回值是一個固定長度的 List 集合。
LinkedList實現類
線程不安全,效率較高。對于頻繁進行插入、刪除的操作,建議使用LinkedList類,效率較高。
LinkedList list = new LinkedList(); //內部聲明了Node類型的first和last屬性,用于記錄首末元素,默認值為null list.add(123); //創建Node對象,將123封裝到Node對象中,該對象中還有prev和next兩個變量,分別用來記錄前一個和下一個元素的位置Node類型的定義
private static class Node<E> {E item;Node<E> next;Node<E> prev;Node(Node<E> prev, E element, Node<E> next) {this.item = element;this.next = next;this.prev = prev;} }Vector實現類
Vector是線程安全的。大多數操作與ArrayList相同。通過Vector()構造器創建對象時,底層都創建長度為10的數組。在擴容方面,默認擴容為原來的數組長度的2倍。
在各種List中,最好把ArrayList作為缺省選擇。當插入、刪除頻繁時,使用LinkedList;Vector總是比ArrayList慢,所以盡量避免使用。
總結
以上是生活随笔為你收集整理的Java集合(4)--List接口及其实现类ArrayList、LinkedList和Vector的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 苹果电脑是怎么换机(苹果电脑如何换新机)
- 下一篇: Java集合(5)--Set接口及其实现