最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

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

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

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

基本特性

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

常用方法

  • 添加元素

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

添加單個(gè)元素: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);
  • 通過值刪除(第一個(gè)匹配的元素):remove(Object o)
list.remove("banana");
  • 遍歷元素

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

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

性能注意事項(xiàng)

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

使用示例

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 是適用于頻繁訪問和修改的場(chǎng)景,但在性能和安全性要求較高的情況下,選擇其他集合(如 LinkedList 或同步列表)可能更為合適。

是的, ArrayList 只能存儲(chǔ)引用數(shù)據(jù)類型,不能直接存儲(chǔ)基本數(shù)據(jù)類型(如 int、double、char 等)。這是因?yàn)?nbsp;ArrayList 是基于 Java 的泛型實(shí)現(xiàn)的,而泛型只支持對(duì)象類型(引用類型),不支持基本數(shù)據(jù)類型。

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

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

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

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

示例:

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

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

取值時(shí)自動(dòng)拆箱

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

示例:

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

注意事項(xiàng)

  • 性能

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

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

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

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

  • 使用 ArrayList<Object>

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

    • 自定義一個(gè)類,把所有需要的數(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> 或類似的容器,按鍵值對(duì)存儲(chǔ)不同類型的數(shù)據(jù)。

總結(jié)

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

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

相關(guān)文章

  • Java內(nèi)存模型相關(guān)知識(shí)總結(jié)

    Java內(nèi)存模型相關(guān)知識(shí)總結(jié)

    這篇文章主要介紹了Java內(nèi)存模型相關(guān)知識(shí)總結(jié),文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2019-10-10
  • JavaSE反射、枚舉、lambda表達(dá)式常用方法舉例

    JavaSE反射、枚舉、lambda表達(dá)式常用方法舉例

    這篇文章主要介紹了JavaSE反射、枚舉、lambda表達(dá)式常用方法的相關(guān)資料,反射允許在運(yùn)行時(shí)檢查和操作類、方法和屬性,枚舉提供了一種更安全和優(yōu)雅的方式來定義常量,而Lambda表達(dá)式則簡化了函數(shù)式接口的實(shí)現(xiàn),需要的朋友可以參考下
    2024-12-12
  • SpringBoot Tomcat漏洞修復(fù)的解決方法

    SpringBoot Tomcat漏洞修復(fù)的解決方法

    本文主要介紹了SpringBoot Tomcat漏洞修復(fù)的解決方法,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2025-04-04
  • java使用POI讀取properties文件并寫到Excel的方法

    java使用POI讀取properties文件并寫到Excel的方法

    這篇文章主要介紹了java使用POI讀取properties文件并寫到Excel的方法,涉及java操作properties文件及Excel文件的相關(guān)技巧,需要的朋友可以參考下
    2015-06-06
  • 深入理解java long 存儲(chǔ)時(shí)間戳

    深入理解java long 存儲(chǔ)時(shí)間戳

    存儲(chǔ)時(shí)間打算用時(shí)間戳來存儲(chǔ),打算用long類型來代表時(shí)間戳,這篇文章主要介紹了深入理解java long 存儲(chǔ)時(shí)間戳,非常具有實(shí)用價(jià)值,需要的朋友可以參考下
    2018-10-10
  • springboot druid數(shù)據(jù)庫連接池連接失敗后一直重連的解決方法

    springboot druid數(shù)據(jù)庫連接池連接失敗后一直重連的解決方法

    本文主要介紹了springboot druid數(shù)據(jù)庫連接池連接失敗后一直重連的解決方法,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2022-04-04
  • springboot之SpringApplication生命周期和事件機(jī)制解讀

    springboot之SpringApplication生命周期和事件機(jī)制解讀

    這篇文章主要介紹了springboot之SpringApplication生命周期和事件機(jī)制,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2023-06-06
  • Java BigInteger類,BigDecimal類,Date類,DateFormat類及Calendar類用法示例

    Java BigInteger類,BigDecimal類,Date類,DateFormat類及Calendar類用法示例

    這篇文章主要介紹了Java BigInteger類,BigDecimal類,Date類,DateFormat類及Calendar類用法,結(jié)合實(shí)例形式詳細(xì)分析了Java使用BigInteger類,BigDecimal類,Date類,DateFormat類及Calendar類進(jìn)行數(shù)值運(yùn)算與日期運(yùn)算相關(guān)操作技巧,需要的朋友可以參考下
    2019-03-03
  • 使用SpringBoot動(dòng)態(tài)切換數(shù)據(jù)源的實(shí)現(xiàn)方式

    使用SpringBoot動(dòng)態(tài)切換數(shù)據(jù)源的實(shí)現(xiàn)方式

    在我們企業(yè)項(xiàng)目開發(fā)的過程中,有的時(shí)候,一個(gè)項(xiàng)目需要在運(yùn)行時(shí),根據(jù)某種條件選擇使用哪個(gè)數(shù)據(jù)源,那么此時(shí)該怎么進(jìn)行動(dòng)態(tài)切換呢,本文給大家例舉一種常見的實(shí)現(xiàn)方式,文中有詳細(xì)的實(shí)現(xiàn)步驟,需要的朋友可以參考下
    2023-12-12
  • java使用dom4j操作xml示例代碼

    java使用dom4j操作xml示例代碼

    dom4j是一個(gè)Java的XML API,類似于jdom,用來讀寫XML文件,下面我來個(gè)小例子學(xué)習(xí)他的使用方法
    2013-11-11

最新評(píng)論

泸州市| 信丰县| 恩施市| 海兴县| 金沙县| 正镶白旗| 海盐县| 庆元县| 丁青县| 双鸭山市| 门头沟区| 内黄县| 榕江县| 佛教| 依兰县| 恩施市| 观塘区| 济阳县| 望城县| 澄迈县| 上思县| 平遥县| 华安县| 赣榆县| 台中县| 温州市| 老河口市| 邵东县| 宁都县| 德化县| 海伦市| 太谷县| 延川县| 左权县| 白朗县| 项城市| 绥棱县| 久治县| 神农架林区| 神农架林区| 砀山县|