Java ArrayList常用方法

Java ArrayList trimToSize()方法  用于调整arraylist集合空间的大小。

语法

语法如下:
public void trimToSize();

参数

返回值

没有返回值

内部实现

/**
 * 将ArrayList的实际容量调整为实际元素总个数大小,原是数组容量大小
 */
public void trimToSize() {
    // modCount用来记录修改次数,是父类AbstractList中的属性
    modCount++;// 修改次数加1
    // size是ArrayList中实际有的元素的个数;elementData.length是数组的长度
    // 如果ArrayList中实际元素个数小于数组长度,那么就需要清除掉数组中空的元素,然后将数组长度设置为ArrayList中实际元素个数
    if (size < elementData.length) {
        // 又是一个三元表达式,判断ArrayList中是否没有元素,即0个元素,则将elementData设置为一个空数组
        // 如果元素个数大于0,则调用Arrays.copyOf()方法重新生成一个长度为size的数组,然后赋给elementData
        elementData = (size == 0) ? EMPTY_ELEMENTDATA : Arrays.copyOf(elementData, size);
    }
}

为什么要调整

结合ArrayList源码解读,因为arraylist大小是动态的,每次当容量不够用的是否都会将动态数组增加为原来的1.5倍数,

所以,这个1.5倍的空间而并没有完全被使用,我们可以使用trimToSize()来动态调整数组的大小,去除预留多余的空间。

例子

import java.util.ArrayList;
import java.util.List;

public class ArrayListExampleTrimToSize{
    public static void main(String[] args) {
        ArrayList<String> arrayList = new ArrayList<>();
        for (int i = 0; i < 10; i++) {
            arrayList.add("yxjc_" + i);
        }
        arrayList.trimToSize();
        System.out.println(arrayList);

    }
}