国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

ArrayList和LinkedList

這篇具有很好參考價值的文章主要介紹了ArrayList和LinkedList。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點擊"舉報違法"按鈕提交疑問。

目錄

ArrayList

1.ArrayList簡介

2.ArrayList使用

2.1ArrayList的構(gòu)造?

?2.2ArrayList常見操作

2.3ArrayList的遍歷

2.4ArrayList的擴容機制

3.ArrayList的具體使用

4.ArrayList的問題

5.ArrayList的缺陷

LinkedList

1.LinkedList的模擬實現(xiàn)

2.LinkedList的使用

2.1什么是LinkedList

2.2LinkedList的使用

ArrayList和LinkedList的區(qū)別


ArrayList

1.ArrayList簡介

在集合框架中, ArrayList 是一個普通的類,實現(xiàn)了 List 接口,具體框架圖如下:
ArrayList和LinkedList
說明
1. ArrayList 是以泛型方式實現(xiàn)的,使用時必須要先實例化
2. ArrayList 實現(xiàn)了 RandomAccess 接口,表明 ArrayList 支持隨機訪問
3. ArrayList 實現(xiàn)了 Cloneable 接口,表明 ArrayList 是可以 clone
4. ArrayList 實現(xiàn)了 Serializable 接口,表明 ArrayList 是支持序列化的
5. Vector 不同, ArrayList 不是線程安全的,在單線程下可以使用,在多線程中可以選擇 Vector 或者
CopyOnWriteArrayList
6. ArrayList 底層是一段連續(xù)的空間,并且可以動態(tài)擴容,是一個動態(tài)類型的順序表

2.ArrayList使用

2.1ArrayList的構(gòu)造?

ArrayList和LinkedList

public static void main(String[] args) {
    // ArrayList創(chuàng)建,推薦寫法
    // 構(gòu)造一個空的列表
    List<Integer> list1 = new ArrayList<>();
    // 構(gòu)造一個具有10個容量的列表
    List<Integer> list2 = new ArrayList<>(10);
    list2.add(1);
    list2.add(2);
    list2.add(3);
    // list2.add("hello"); // 編譯失敗,List<Integer>已經(jīng)限定了,list2中只能存儲整形元素
    // list3構(gòu)造好之后,與list中的元素一致
    ArrayList<Integer> list3 = new ArrayList<>(list2);
    // 避免省略類型,否則:任意類型的元素都可以存放,使用時將是一場災(zāi)難
    List list4 = new ArrayList();
    list4.add("111");
    list4.add(100);
}

?2.2ArrayList常見操作

ArrayList 雖然提供的方法比較多,但是常用方法如下所示,需要用到其他方法時,同學們自行查看 ArrayList 的幫助文檔。
方法 解釋
boolean add (E e)
尾插 e
void add (int index, E element)
e 插入到 index 位置
boolean addAll (Collection<? extends E> c)
尾插 c 中的元素
E remove (int index)
刪除 index 位置元素
boolean remove (Object o)
刪除遇到的第一個 o
E get (int index)
獲取下標 index 位置元素
E set (int index, E element)
將下標 index 位置元素設(shè)置為 element
void clear ()
清空
boolean contains (Object o)
判斷 o 是否在線性表中
int indexOf (Object o)
返回第一個 o 所在下標
int lastIndexOf (Object o)
返回最后一個 o 的下標
List<E> subList (int fromIndex, int toIndex)
截取部分 list
public static void main(String[] args) {
    List<String> list = new ArrayList<>();
    list.add("JavaSE");
    list.add("JavaWeb");
    list.add("JavaEE");
    list.add("JVM");
    list.add("測試課程");
    System.out.println(list);
    // 獲取list中有效元素個數(shù)
    System.out.println(list.size());
    // 獲取和設(shè)置index位置上的元素,注意index必須介于[0, size)間
    System.out.println(list.get(1));
    list.set(1, "JavaWEB");
    System.out.println(list.get(1));
    // 在list的index位置插入指定元素,index及后續(xù)的元素統(tǒng)一往后搬移一個位置
    list.add(1, "Java數(shù)據(jù)結(jié)構(gòu)");
    System.out.println(list);
    // 刪除指定元素,找到了就刪除,該元素之后的元素統(tǒng)一往前搬移一個位置
    list.remove("JVM");
    System.out.println(list);
    // 刪除list中index位置上的元素,注意index不要超過list中有效元素個數(shù),否則會拋出下標越界異常
    list.remove(list.size()-1);
    System.out.println(list);
    // 檢測list中是否包含指定元素,包含返回true,否則返回false
    if(list.contains("測試課程")){
    list.add("測試課程");
    }
    // 查找指定元素第一次出現(xiàn)的位置:indexOf從前往后找,lastIndexOf從后往前找
    list.add("JavaSE");
    System.out.println(list.indexOf("JavaSE"));
    System.out.println(list.lastIndexOf("JavaSE"));
    // 使用list中[0, 4)之間的元素構(gòu)成一個新的SubList返回,但是和ArrayList共用一個elementData數(shù)組
    List<String> ret = list.subList(0, 4);
    System.out.println(ret);
    list.clear();
    System.out.println(list.size());
}

2.3ArrayList的遍歷

ArrayList 可以使用三方方式遍歷: for 循環(huán) + 下標、 foreach 、使用迭代器
public static void main(String[] args) {
    List<Integer> list = new ArrayList<>();
    list.add(1);
    list.add(2);
    list.add(3);
    list.add(4);
    list.add(5);
    // 使用下標+for遍歷
    for (int i = 0; i < list.size(); i++) {
    System.out.print(list.get(i) + " ");
    }
    System.out.println();
    // 借助foreach遍歷
    for (Integer integer : list) {
    System.out.print(integer + " ");
    }
    System.out.println();
    Iterator<Integer> it = list.listIterator();
    while(it.hasNext()){
    System.out.print(it.next() + " ");
    }
    System.out.println();
}
注意:
1. ArrayList 最長使用的遍歷方式是: for 循環(huán) + 下標 以及 foreach
2. 迭代器是設(shè)計模式的一種,后序容器接觸多了再給大家鋪墊

2.4ArrayList的擴容機制

ArrayList 是一個動態(tài)類型的順序表,即:在插入元素的過程中會自動擴容。以下是 ArrayList 源碼中擴容方式:
Object[] elementData; // 存放元素的空間
private static final Object[] DEFAULTCAPACITY_EMPTY_ELEMENTDATA = {}; // 默認空間
private static final int DEFAULT_CAPACITY = 10; // 默認容量大小
public boolean add(E e) {
    ensureCapacityInternal(size + 1); // Increments modCount!!
    elementData[size++] = e;
    return true;
}
private void ensureCapacityInternal(int minCapacity) {
    ensureExplicitCapacity(calculateCapacity(elementData, minCapacity));
}
private static int calculateCapacity(Object[] elementData, int minCapacity) {
    if (elementData == DEFAULTCAPACITY_EMPTY_ELEMENTDATA) {
    return Math.max(DEFAULT_CAPACITY, minCapacity);
    }
    return minCapacity;
}
private void ensureExplicitCapacity(int minCapacity) {
    modCount++;
    // overflow-conscious code
    if (minCapacity - elementData.length > 0)
    grow(minCapacity);
}
private static final int MAX_ARRAY_SIZE = Integer.MAX_VALUE - 8;
private void grow(int minCapacity) {
    // 獲取舊空間大小
    int oldCapacity = elementData.length;
    // 預(yù)計按照1.5倍方式擴容
    int newCapacity = oldCapacity + (oldCapacity >> 1);
    // 如果用戶需要擴容大小 超過 原空間1.5倍,按照用戶所需大小擴容
    if (newCapacity - minCapacity < 0)
    newCapacity = minCapacity;
    // 如果需要擴容大小超過MAX_ARRAY_SIZE,重新計算容量大小
    if (newCapacity - MAX_ARRAY_SIZE > 0)
    newCapacity = hugeCapacity(minCapacity);
    // 調(diào)用copyOf擴容
    elementData = Arrays.copyOf(elementData, newCapacity);
}
private static int hugeCapacity(int minCapacity) {
    // 如果minCapacity小于0,拋出OutOfMemoryError異常
    if (minCapacity < 0)
    throw new OutOfMemoryError();
    return (minCapacity > MAX_ARRAY_SIZE) ? Integer.MAX_VALUE : MAX_ARRAY_SIZE;
}
總結(jié)
1. 檢測是否真正需要擴容,如果是調(diào)用 grow 準備擴容
2. 預(yù)估需要庫容的大小
  • 初步預(yù)估按照1.5倍大小擴容
  • 如果用戶所需大小超過預(yù)估1.5倍大小,則按照用戶所需大小擴容
  • 真正擴容之前檢測是否能擴容成功,防止太大導致擴容失敗
3. 使用 copyOf 進行擴容

3.ArrayList的具體使用

簡單的洗牌算法
public class Card {
    public int rank; // 牌面值
    public String suit; // 花色
    @Override
    public String toString() {
    return String.format("[%s %d]", suit, rank);
    }
}
import java.util.List;
import java.util.ArrayList;
import java.util.Random;
public class CardDemo {
    public static final String[] SUITS = {"?", "?", "?", "?"};
    // 買一副牌
    private static List<Card> buyDeck() {
        List<Card> deck = new ArrayList<>(52);
        for (int i = 0; i < 4; i++) {
            for (int j = 1; j <= 13; j++) {
            String suit = SUITS[i];
            int rank = j;
            Card card = new Card();
            card.rank = rank;
            card.suit = suit;
            deck.add(card);
            }
        }
        return deck;
    }
    private static void swap(List<Card> deck, int i, int j) {
        Card t = deck.get(i);
        deck.set(i, deck.get(j));
        deck.set(j, t);
    }
    private static void shuffle(List<Card> deck) {
        Random random = new Random(20190905);
        for (int i = deck.size() - 1; i > 0; i--) {
        int r = random.nextInt(i);
        swap(deck, i, r);
        }
    }
    public static void main(String[] args) {
        List<Card> deck = buyDeck();
        System.out.println("剛買回來的牌:");
        System.out.println(deck);
        shuffle(deck);
        System.out.println("洗過的牌:");
        System.out.println(deck);
        // 三個人,每個人輪流抓 5 張牌
        List<List<Card>> hands = new ArrayList<>();
        hands.add(new ArrayList<>());
        hands.add(new ArrayList<>());
        hands.add(new ArrayList<>());
        for (int i = 0; i < 5; i++) {
            for (int j = 0; j < 3; j++) {
            hands.get(j).add(deck.remove(0));
            }
        }
        System.out.println("剩余的牌:");
        System.out.println(deck);
        System.out.println("A 手中的牌:");
        System.out.println(hands.get(0));
        System.out.println("B 手中的牌:");
        System.out.println(hands.get(1));
        System.out.println("C 手中的牌:");
        System.out.println(hands.get(2));
    }
}
運行結(jié)果
剛買回來的牌:
[[? 1], [? 2], [? 3], [? 4], [? 5], [? 6], [? 7], [? 8], [? 9], [? 10], [? 11], [? 12], [? 13], [? 1], [? 2], [? 3], [? 4], [? 5], [? 6], [? 7],
[? 8], [? 9], [? 10], [? 11], [? 12], [? 13], [? 1], [? 2], [? 3], [? 4], [? 5], [? 6], [? 7], [? 8], [? 9], [? 10], [? 11], [? 12], [?
13], [? 1], [? 2], [? 3], [? 4], [? 5], [? 6], [? 7], [? 8], [? 9], [? 10], [? 11], [? 12], [? 13]]
洗過的牌:
[[? 11], [? 6], [? 13], [? 10], [? 13], [? 2], [? 1], [? 9], [? 12], [? 5], [? 8], [? 6], [? 3], [? 5], [? 1], [? 6], [? 13], [? 12], [? 12],
[? 5], [? 4], [? 3], [? 7], [? 3], [? 2], [? 1], [? 2], [? 4], [? 8], [? 10], [? 11], [? 10], [? 7], [? 9], [? 4], [? 8], [? 7], [? 8], [? 9], [?
12], [? 11], [? 11], [? 10], [? 5], [? 13], [? 9], [? 7], [? 6], [? 4], [? 2], [? 1], [? 3]]
剩余的牌:
[[? 6], [? 13], [? 12], [? 12], [? 5], [? 4], [? 3], [? 7], [? 3], [? 2], [? 1], [? 2], [? 4], [? 8], [? 10], [? 11], [? 10], [? 7], [? 9], [?
4], [? 8], [? 7], [? 8], [? 9], [? 12], [? 11], [? 11], [? 10], [? 5], [? 13], [? 9], [? 7], [? 6], [? 4], [? 2], [? 1], [? 3]]
A 手中的牌:
[[? 11], [? 10], [? 1], [? 5], [? 3]]
B 手中的牌:
[[? 6], [? 13], [? 9], [? 8], [? 5]]
C 手中的牌:
[[? 13], [? 2], [? 12], [? 6], [? 1]]

4.ArrayList的問題

1. ArrayList 底層使用連續(xù)的空間,任意位置插入或刪除元素時,需要將該位置后序元素整體往前或者往后搬移,故時間復雜度為O(N)
2. 增容需要申請新空間,拷貝數(shù)據(jù),釋放舊空間。會有不小的消耗。
3. 增容一般是呈 2 倍的增長,勢必會有一定的空間浪費。例如當前容量為 100 ,滿了以后增容到 200 ,我們再繼續(xù)插入了5 個數(shù)據(jù),后面沒有數(shù)據(jù)插入了,那么就浪費了 95 個數(shù)據(jù)空間。

5.ArrayList的缺陷

通過源碼知道, ArrayList 底層使用數(shù)組來存儲元素:
由于其底層是一段連續(xù)空間,當 ArrayList 任意位置插入或者刪除元素時,就需要將后序元素整體往前或者往后 搬移,時間復雜度為 O(n) ,效率比較低,因此 ArrayList 不適合做任意位置插入和刪除比較多的場景 。因此: java集合中又引入了LinkedList ,即鏈表結(jié)構(gòu)。

LinkedList

1.LinkedList的模擬實現(xiàn)

// 2、無頭雙向鏈表實現(xiàn)
public class MyLinkedList {
    //頭插法
    public void addFirst(int data){ }
    //尾插法
    public void addLast(int data){}
    //任意位置插入,第一個數(shù)據(jù)節(jié)點為0號下標
    public void addIndex(int index,int data){}
    //查找是否包含關(guān)鍵字key是否在單鏈表當中
    public boolean contains(int key){}
    //刪除第一次出現(xiàn)關(guān)鍵字為key的節(jié)點
    public void remove(int key){}
    //刪除所有值為key的節(jié)點
    public void removeAllKey(int key){}
    //得到單鏈表的長度
    public int size(){}
    public void display(){}
    public void clear(){}
}

2.LinkedList的使用

2.1什么是LinkedList

LinkedList 的底層是雙向鏈表結(jié)構(gòu) ( 鏈表后面介紹 ) ,由于鏈表沒有將元素存儲在連續(xù)的空間中,元素存儲在單獨的節(jié)點中,然后通過引用將節(jié)點連接起來了,因此在在任意位置插入或者刪除元素時,不需要搬移元素,效率比較高。

ArrayList和LinkedList

?在集合框架中,LinkedList也實現(xiàn)了List接口,具體如下:

ArrayList和LinkedList

【說明】
????????1. LinkedList實現(xiàn)了 List 接口
????????2. LinkedList的底層使用了雙向鏈表
????????3. LinkedList沒有實現(xiàn) RandomAccess 接口,因此 LinkedList 不支持隨機訪問
????????4. LinkedList的任意位置插入和刪除元素時效率比較高,時間復雜度為 O(1)
????????5. LinkedList比較適合任意位置插入的場景

2.2LinkedList的使用

LinkedList 的構(gòu)造

ArrayList和LinkedList

public static void main(String[] args) {
    // 構(gòu)造一個空的LinkedList
    List<Integer> list1 = new LinkedList<>();
    List<String> list2 = new java.util.ArrayList<>();
    list2.add("JavaSE");
    list2.add("JavaWeb");
    list2.add("JavaEE");
    // 使用ArrayList構(gòu)造LinkedList
    List<String> list3 = new LinkedList<>(list2);
}

?LinkedList的其他常用方法介紹

方法 解釋
boolean add (E e)
尾插 e
void add (int index, E element)
e 插入到 index 位置
boolean addAll (Collection<? extends E> c)
尾插 c 中的元素
E remove (int index)
刪除 index 位置元素
boolean remove (Object o)
刪除遇到的第一個 o
E get (int index)
獲取下標 index 位置元素
E set (int index, E element)
將下標 index 位置元素設(shè)置為 element
void clear ()
清空
boolean contains (Object o)
判斷 o 是否在線性表中
int indexOf (Object o)
返回第一個 o 所在下標
int lastIndexOf (Object o)
返回最后一個 o 的下標
List<E> subList (int fromIndex, int toIndex)
截取部分 list
public static void main(String[] args) {
    LinkedList<Integer> list = new LinkedList<>();
    list.add(1); // add(elem): 表示尾插
    list.add(2);
    list.add(3);
    list.add(4);
    list.add(5);
    list.add(6);
    list.add(7);
    System.out.println(list.size());
    System.out.println(list);
    // 在起始位置插入0
    list.add(0, 0); // add(index, elem): 在index位置插入元素elem
    System.out.println(list);
    list.remove(); // remove(): 刪除第一個元素,內(nèi)部調(diào)用的是removeFirst()
    list.removeFirst(); // removeFirst(): 刪除第一個元素
    list.removeLast(); // removeLast(): 刪除最后元素
    list.remove(1); // remove(index): 刪除index位置的元素
    System.out.println(list);
    // contains(elem): 檢測elem元素是否存在,如果存在返回true,否則返回false
    if(!list.contains(1)){
        list.add(0, 1);
    }
    list.add(1);
    System.out.println(list);
    System.out.println(list.indexOf(1)); // indexOf(elem): 從前往后找到第一個elem的位置
    System.out.println(list.lastIndexOf(1)); // lastIndexOf(elem): 從后往前找第一個1的位置
    int elem = list.get(0); // get(index): 獲取指定位置元素
    list.set(0, 100); // set(index, elem): 將index位置的元素設(shè)置為elem
    System.out.println(list);
    // subList(from, to): 用list中[from, to)之間的元素構(gòu)造一個新的LinkedList返回
    List<Integer> copy = list.subList(0, 3); 
    System.out.println(list);
    System.out.println(copy);
    list.clear(); // 將list中元素清空
    System.out.println(list.size());
}
LinkedList 的遍歷
public static void main(String[] args) {
    LinkedList<Integer> list = new LinkedList<>();
    list.add(1); // add(elem): 表示尾插
    list.add(2);
    list.add(3);
    list.add(4);
    list.add(5);
    list.add(6);
    list.add(7);
    System.out.println(list.size());
    // foreach遍歷
    for (int e:list) {
        System.out.print(e + " ");
    }
    System.out.println();
    // 使用迭代器遍歷---正向遍歷
    ListIterator<Integer> it = list.listIterator();
    while(it.hasNext()){
        System.out.print(it.next()+ " ");
    }
    System.out.println();
    // 使用反向迭代器---反向遍歷
    ListIterator<Integer> rit = list.listIterator(list.size());
    while (rit.hasPrevious()){
        System.out.print(rit.previous() +" ");
    }
    System.out.println();
}

ArrayList和LinkedList的區(qū)別

ArrayList和LinkedList

?文章來源地址http://www.zghlxwxcb.cn/news/detail-417662.html

到了這里,關(guān)于ArrayList和LinkedList的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務(wù),不擁有所有權(quán),不承擔相關(guān)法律責任。如若轉(zhuǎn)載,請注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實不符,請點擊違法舉報進行投訴反饋,一經(jīng)查實,立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費用

相關(guān)文章

  • ArrayList和LinkedList的區(qū)別

    ArrayList和Vector使用了數(shù)組的實現(xiàn),可以認為ArrayList或者Vector封裝了對內(nèi)部數(shù)組的操作,比如向數(shù)組中添加,刪除,插入新的元素或者數(shù)據(jù)的擴展和重定向。 LinkedList使用了循環(huán)雙向鏈表數(shù)據(jù)結(jié)構(gòu)。與基于數(shù)組ArrayList相比,這是兩種截然不同的實現(xiàn)技術(shù),這也決定了它們將適用

    2024年02月08日
    瀏覽(24)
  • 談?wù)凙rrayList和LinkedList的區(qū)別

    談?wù)凙rrayList和LinkedList的區(qū)別

    目錄 一、什么是數(shù)組 二、ArrayList 三、LinkedList 四、ArrayList和LinkedList的區(qū)別 在編程中,數(shù)組(Array)是一種用于存儲多個相同類型數(shù)據(jù)元素的數(shù)據(jù)結(jié)構(gòu)。它是一個有序的集合,其中每個元素都有一個唯一的索引(下標),用于訪問和操作數(shù)組中的元素。 數(shù)組通常用于存儲數(shù)據(jù)

    2024年01月21日
    瀏覽(23)
  • ArrayList 和 LinkedList 有什么區(qū)別

    ArrayList 和 LinkedList 是Java中的兩種常見的集合類型,它們具有一些相似之處,但也存在一些重要的區(qū)別。 ArrayList ArrayList 是數(shù)組列表類型,它是通過一個可變大小的數(shù)組來實現(xiàn)的。這意味著 ArrayList 支持隨機訪問元素,因為每個元素都可以通過索引來訪問,而且訪問速度很快。

    2024年02月05日
    瀏覽(18)
  • java源碼----集合系列1----ArrayList,linkedList

    java源碼----集合系列1----ArrayList,linkedList

    底層是一個object數(shù)組 Arraylist 是java里面Collection? 標準的一個集合,其 底層是一個object數(shù)組 。當new一個空參的ArrayList的時候,會默認生成一個空數(shù)組。 Arraylist上限是 Integer.MAX_VALUE - 8(Integer.MAX_VALUE? = ?2^31-1) ; 超過上限會報內(nèi)存溢出 這里為什么是Integer.MAX_VALUE-8? ,源碼上的解

    2024年02月03日
    瀏覽(28)
  • Java鏈式存儲LinkedList----與ArrayList比較

    Java鏈式存儲LinkedList----與ArrayList比較

    作為一名對技術(shù)充滿熱情的學習者,我一直以來都深刻地體會到知識的廣度和深度。在這個不斷演變的數(shù)字時代,我遠非專家,而是一位不斷追求進步的旅行者。通過這篇博客,我想分享我在某個領(lǐng)域的學習經(jīng)驗,與大家共同探討、共同成長。請大家以開放的心態(tài)閱讀,相信

    2024年01月23日
    瀏覽(21)
  • ArrayList和Vector及LinkedList的區(qū)別

    1.ArrayList和Vector的區(qū)別 第一句話:ArrayList和Vector底層都是數(shù)組實現(xiàn)的,初始容量都為10;在ArrayList的底層,是通過定義一個DEFAULT_CAPACITY的常量來指定的,而Vector的底層,是直接在空參構(gòu)造中,通過寫死了一個this(10)來指定的; 第二句話:Vector大部分方法的底層實現(xiàn),都加了 s

    2024年02月11日
    瀏覽(19)
  • Java ArrayList 與 LinkedList 的靈活選擇

    Java ArrayList 類是一個可變大小的數(shù)組,位于 java.util 包中。 for 循環(huán): for-each 循環(huán): ArrayList 是 Java 中常用的數(shù)據(jù)結(jié)構(gòu),它可以存儲各種類型的數(shù)據(jù),并且可以根據(jù)需要調(diào)整大小。 ArrayList 的優(yōu)勢: 可變大小 可以存儲各種類型的數(shù)據(jù) 提供多種方法來訪問、修改和刪除元素 可以使用

    2024年03月09日
    瀏覽(25)
  • java面試基礎(chǔ) -- ArrayList 和 LinkedList有什么區(qū)別, ArrayList和Vector呢?

    java面試基礎(chǔ) -- ArrayList 和 LinkedList有什么區(qū)別, ArrayList和Vector呢?

    目錄 基本介紹 有什么不同?? ArrayList的擴容機制 ArrayLIst的基本使用 ArrayList和Vector 還記得我們的java集合框架嗎, 我們來復習一下, 如圖: ? ? ? ? ?可以看出來 ArrayList和LinkedList 都是具體類, 他們都是接口List的實現(xiàn)類. 但是他們底層的邏輯是不同的, 相信學過這個的應(yīng)該大概有個

    2024年02月12日
    瀏覽(22)
  • Javat集合之Lis---(ArrayList和LinkedList)

    Javat集合之Lis---(ArrayList和LinkedList)

    提示:以下是本篇文章正文內(nèi)容,下面案例可供參考 List是一種常用的集合類型,它可以存儲任意類型的對象,也可以結(jié)合泛型來存儲具體的類型對象, 本質(zhì)上就是一個容器。 ArrayList和LinkedList通用方法: 以上方法通用且常用的方法其他方法可參考相關(guān)的文檔進行查詢即可,

    2024年01月24日
    瀏覽(29)
  • java面試基礎(chǔ) -- ArrayList 和 LinkedList有什么區(qū)別

    java面試基礎(chǔ) -- ArrayList 和 LinkedList有什么區(qū)別

    目錄 基本介紹 有什么不同?? ArrayList的擴容機制 ArrayLIst的基本使用 ArrayList和Vector 還記得我們的java集合框架嗎, 我們來復習一下, 如圖: ? ? ? ? ?可以看出來 ArrayList和LinkedList 都是具體類, 他們都是接口List的實現(xiàn)類. 但是他們底層的邏輯是不同的, 相信學過這個的應(yīng)該大概有個

    2024年02月12日
    瀏覽(25)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包