欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Java中ArrayList的常見用法示例小結(jié)

 更新時間:2025年02月26日 08:45:45   作者:Tomorrowland_D  
本文介紹了Java的ArrayList,它是一個動態(tài)數(shù)組,可以自動調(diào)整大小,支持添加、刪除、獲取元素等操作,同時,還討論了如何存儲基本數(shù)據(jù)類型以及在多線程環(huán)境下的使用注意事項,感興趣的朋友一起看看吧

Java 中的 ArrayList 是一個非常常用的動態(tài)數(shù)組,它屬于 Java 集合框架的一部分。與普通數(shù)組不同,ArrayList 可以在需要時動態(tài)調(diào)整其大小。以下是 ArrayList 的一些詳細介紹:

基本特性

  • 動態(tài)大小ArrayList 會自動調(diào)整其大小以適應新元素。
  • 有序集合:元素按插入順序存儲,但可以通過索引訪問。
  • 允許重復:可以包含重復的元素。
  • 允許空值:可以包含 null 值。
  • 非線程安全:在多線程環(huán)境下使用時需要手動同步。

常用方法

  • 添加元素

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

添加單個元素:add(E e)

list.add("apple");
  • 在指定位置添加:add(int index, E element)
list.add(1, "banana");
  • 訪問元素

    • 通過索引:get(int index)
  • 修改元素

    • 修改元素值:set(int index, E element)
list.set(1, "orange");
  • 刪除元素

    • 通過索引刪除:remove(int index)
list.remove(0);
  • 通過值刪除(第一個匹配的元素):remove(Object o)
list.remove("banana");
  • 遍歷元素

for (String item : list) {
    System.out.println(item);
}
  • 其他常用方法

    • 獲取大小size()
    • 檢查是否為空isEmpty()
    • 清空列表clear()
    • 檢查是否包含指定元素contains(Object o)
    • 獲取元素索引indexOf(Object o)

性能注意事項

  • 時間復雜度
    • 添加/修改/獲取元素:O(1)(平均情況)
    • 在中間插入/刪除元素:O(n)
  • 由于 ArrayList 是基于數(shù)組實現(xiàn)的,當超過初始容量時,可能需要重新分配數(shù)組,這會涉及原數(shù)組到新數(shù)組的復制。

使用示例

import java.util.ArrayList;
public class ArrayListExample {
    public static void main(String[] args) {
        ArrayList<String> list = new ArrayList<>();
        // 添加元素
        list.add("apple");
        list.add("banana");
        list.add("cherry");
        // 插入元素
        list.add(1, "orange");
        // 訪問和修改元素
        String fruit = list.get(0);
        list.set(1, "kiwi");
        // 刪除元素
        list.remove("banana");
        // 輸出列表
        for (String item : list) {
            System.out.println(item);
        }
    }
}

ArrayList 是適用于頻繁訪問和修改的場景,但在性能和安全性要求較高的情況下,選擇其他集合(如 LinkedList 或同步列表)可能更為合適。

是的, ArrayList 只能存儲引用數(shù)據(jù)類型,不能直接存儲基本數(shù)據(jù)類型(如 intdouble、char 等)。這是因為 ArrayList 是基于 Java 的泛型實現(xiàn)的,而泛型只支持對象類型(引用類型),不支持基本數(shù)據(jù)類型。

如何存儲基本數(shù)據(jù)類型?

雖然 ArrayList 不能直接存儲基本數(shù)據(jù)類型,但 Java 提供了自動裝箱(Autoboxing)機制,可以將基本數(shù)據(jù)類型自動轉(zhuǎn)換為對應的包裝類,使其間接存儲基本數(shù)據(jù)類型。

常見的基本數(shù)據(jù)類型及其對應的包裝類

基本數(shù)據(jù)類型包裝類(引用類型)
intInteger
doubleDouble
charCharacter
booleanBoolean
floatFloat
longLong
shortShort
byteByte

示例:

ArrayList<Integer> intList = new ArrayList<>();
intList.add(10);   // 自動裝箱,將 int 轉(zhuǎn)為 Integer
intList.add(20);
intList.add(30);
System.out.println(intList); // 輸出: [10, 20, 30]

在這個例子中,10、20 和 30 是 int 類型的數(shù)據(jù),但 Java 自動將它們轉(zhuǎn)換為 Integer(包裝類)對象,并存入了 ArrayList。

取值時自動拆箱

存儲在 ArrayList 中的包裝類對象,在需要時會自動轉(zhuǎn)換回基本數(shù)據(jù)類型(稱為“拆箱”)。

示例:

int sum = 0;
for (int num : intList) {  // 自動拆箱,將 Integer 轉(zhuǎn)為 int
    sum += num;
}
System.out.println("總和:" + sum);

注意事項

  • 性能

    • 自動裝箱和拆箱雖然使用方便,但它會增加一定的性能開銷,尤其是頻繁操作時。
  • 避免空指針異常

    • 如果 ArrayList 中的某個元素為 null,在拆箱時會拋出 NullPointerException。
    • 例如:
ArrayList<Integer> intList = new ArrayList<>();
intList.add(null); // 添加了一個 null
int num = intList.get(0); // 自動拆箱時拋出 NullPointerException

如果需要存儲多個不同的基本數(shù)據(jù)類型?

如果你的 ArrayList 需要同時存儲多種基本數(shù)據(jù)類型,可以考慮以下幾種方式:

  • 使用 ArrayList<Object>

    • 通過手動裝箱,將數(shù)據(jù)都存儲為對應的包裝類,然后將它們存入一個 ArrayList<Object> 中。
    • 示例:
ArrayList<Object> list = new ArrayList<>();
list.add(123);        // 存儲 Integer
list.add(45.67);      // 存儲 Double
list.add("Hello");    // 存儲 String
list.add(true);       // 存儲 Boolean
for (Object obj : list) {
    System.out.println(obj.toString());
}
  • 使用自定義類進行封裝

    • 自定義一個類,把所有需要的數(shù)據(jù)類型存為類的字段。

示例:

class Data {
    int intValue;
    double doubleValue;
    String stringValue;
    Data(int intValue, double doubleValue, String stringValue) {
        this.intValue = intValue;
        this.doubleValue = doubleValue;
        this.stringValue = stringValue;
    }
}
ArrayList<Data> dataList = new ArrayList<>();
dataList.add(new Data(10, 20.5, "Hello"));
for (Data data : dataList) {
    System.out.println(data.intValue + ", " + data.doubleValue + ", " + data.stringValue);
}
  • 使用 Map 或其他集合結(jié)構(gòu)

    • 可以使用 Map<String, Object> 或類似的容器,按鍵值對存儲不同類型的數(shù)據(jù)。

總結(jié)

  • ArrayList 只能直接存儲引用類型。
  • 如果要存儲基本數(shù)據(jù)類型,可以通過包裝類實現(xiàn),依賴于自動裝箱和拆箱機制。
  • 對于需要混合存儲多種類型的數(shù)據(jù),可以使用 ArrayList<Object> 或自定義類、Map 等其他結(jié)構(gòu)。-

到此這篇關(guān)于Java中ArrayList的常見用法的文章就介紹到這了,更多相關(guān)Java ArrayList用法內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

最新評論