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

Java中的ArrayList.trimToSize()方法詳解

 更新時(shí)間:2023年11月24日 08:44:41   作者:扛麻袋的少年  
這篇文章主要介紹了Java中的ArrayList.trimToSize()方法詳解,前幾天看了Java?ArrayList,沒有明白trimToSize()這個(gè)方法是什么意思,所以看了一下源碼并且debug一下自己的一個(gè)例子,明白了其中的含義,需要的朋友可以參考下

ArrayList.trimToSize()方法

在看《Java 核心技術(shù)卷一》時(shí),認(rèn)識(shí)到了trimToSize()這個(gè)方法。

原文內(nèi)容如圖所示。

接下來拿例子來參考一下:

在這里插入圖片描述

下文內(nèi)容轉(zhuǎn)載自其他博主blog,講解的很清晰。

前幾天看了Java ArrayList,沒有明白trimToSize()這個(gè)方法是什么意思,所以看了一下源碼并且debug一下自己的一個(gè)例子,明白了其中的含義。貼在這里。

ArrayList al = new ArrayList(10);
for(int i=0;i<10;i++){
    al.add(i);
}
al.add(1);
al.trimToSize();

例子很簡(jiǎn)單,就是new一個(gè)初始容量為10的ArrayList,之后向里面加入一個(gè)元素。接下來看看debug的內(nèi)容:

在這里插入圖片描述

可以看到,向ArrayList里面加入10個(gè)元素之后,elementData的內(nèi)容如圖所示。

在這里插入圖片描述

elementData數(shù)組動(dòng)態(tài)增長到容量為15。這是我們看看ArrayList的源碼:

private void grow(int minCapacity) {
   // overflow-conscious code
    int oldCapacity = elementData.length;
    int newCapacity = oldCapacity + (oldCapacity >> 1);
    if (newCapacity - minCapacity < 0)
        newCapacity = minCapacity;
    if (newCapacity - MAX_ARRAY_SIZE > 0)
        newCapacity = hugeCapacity(minCapacity);
    // minCapacity is usually close to size, so this is a win:
    elementData = Arrays.copyOf(elementData, newCapacity);
}

oldCapacity = 10,1010(10)右移一位位0101(5),newCapacity = 10 + 5 = 15; 之后調(diào)用trimToSize()方法,再看看debug內(nèi)容:

在這里插入圖片描述

此時(shí)elementData的大小變?yōu)榱?1。也就是說這個(gè)方法將elementData的數(shù)組設(shè)置為ArrayList實(shí)際的容量,動(dòng)態(tài)增長的多余容量被刪除了。

再貼個(gè)trimToSize()方法的源碼:用Arrays.copyOf(T [],int newLength)這個(gè)方法來截取elementData數(shù)組。

public void trimToSize() {
    modCount++;
    if (size < elementData.length) {
        elementData = Arrays.copyOf(elementData, size);
    }
}

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

相關(guān)文章

  • Java中Scanner使用方式:單行/多行輸入

    Java中Scanner使用方式:單行/多行輸入

    這篇文章主要介紹了Java中Scanner使用方式:單行/多行輸入,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2022-05-05
  • Spring Gateway基本使用示例小結(jié)

    Spring Gateway基本使用示例小結(jié)

    Springcloud Gateway使用了Webflux中的reactor-netty響應(yīng)式編程組件,底層使用了Netty通訊框架,具體一些特征,本文結(jié)合實(shí)例代碼對(duì)Spring Gateway使用給大家介紹的非常詳細(xì),感興趣的朋友一起看看吧
    2023-11-11
  • java統(tǒng)計(jì)漢字字?jǐn)?shù)的方法示例

    java統(tǒng)計(jì)漢字字?jǐn)?shù)的方法示例

    這篇文章主要介紹了java統(tǒng)計(jì)漢字字?jǐn)?shù)的方法,結(jié)合實(shí)例形式分析了java正則判定、字符串遍歷及統(tǒng)計(jì)相關(guān)操作技巧,需要的朋友可以參考下
    2017-05-05
  • Java三目運(yùn)算符用法舉例

    Java三目運(yùn)算符用法舉例

    三目運(yùn)算符是我們經(jīng)常在代碼中使用的,這篇文章主要給大家介紹了關(guān)于Java三目運(yùn)算符用法的相關(guān)資料,文中通過代碼介紹的非常詳細(xì),需要的朋友可以參考下
    2023-11-11
  • Springboot整合SpringSecurity實(shí)現(xiàn)登錄認(rèn)證和鑒權(quán)全過程

    Springboot整合SpringSecurity實(shí)現(xiàn)登錄認(rèn)證和鑒權(quán)全過程

    這篇文章主要介紹了Springboot整合SpringSecurity實(shí)現(xiàn)登錄認(rèn)證和鑒權(quán)全過程,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2023-12-12
  • JavaWeb分頁的實(shí)現(xiàn)代碼實(shí)例

    JavaWeb分頁的實(shí)現(xiàn)代碼實(shí)例

    這篇文章主要介紹了JavaWeb分頁的實(shí)現(xiàn)代碼實(shí)例,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2019-12-12
  • 詳解Java中類的加載順序

    詳解Java中類的加載順序

    Java中什么時(shí)候類加載,第一次需要使用類信息時(shí)加載。類加載的原則:延遲加載,能不加載就不加載。下面這篇文章主要介紹了Java中類的加載順序,需要的朋友可以參考借鑒,下面來一起看看吧。
    2017-01-01
  • 通過實(shí)例解析Spring組合注解與元注解

    通過實(shí)例解析Spring組合注解與元注解

    這篇文章主要介紹了通過實(shí)例解析Spring組合注解與元注解,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2019-11-11
  • Java日常練習(xí)題,每天進(jìn)步一點(diǎn)點(diǎn)(21)

    Java日常練習(xí)題,每天進(jìn)步一點(diǎn)點(diǎn)(21)

    下面小編就為大家?guī)硪黄狫ava基礎(chǔ)的幾道練習(xí)題(分享)。小編覺得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧,希望可以幫到你
    2021-07-07
  • java 反射調(diào)用Service導(dǎo)致Spring注入Dao失效的解決方案

    java 反射調(diào)用Service導(dǎo)致Spring注入Dao失效的解決方案

    這篇文章主要介紹了java 反射調(diào)用Service導(dǎo)致Spring注入Dao失效的解決方案,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2021-08-08

最新評(píng)論