Java ArrayList trimToSize()方法會(huì)修剪(設(shè)置)arraylist的容量,使其等于arraylist中的元素個(gè)數(shù)。
trimToSize()方法的語(yǔ)法為:
arraylist.trimToSize();
trimToSize()方法不帶任何參數(shù)
trimToSize()方法不返回任何值。而是,它僅更改arraylist的容量。
import java.util.ArrayList; class Main { public static void main(String[] args) { //創(chuàng)建 ArrayList ArrayList<String> languages = new ArrayList<>(); //添加元素到 ArrayList languages.add("Java"); languages.add("Python"); languages.add("JavaScript"); System.out.println("ArrayList: " + languages); // 修剪容量為 3 languages.trimToSize(); System.out.println("ArrayList的大小: " + languages.size()); } }
輸出結(jié)果
ArrayList: [Java, Python, JavaScript] ArrayList的大小: 3
在上面的示例中,我們創(chuàng)建了名為languages的ArrayList。arraylist包含3個(gè)元素。注意這一行,
languages.trimToSize();
在此,trimToSize()方法將arraylist的容量設(shè)置為等于languages(即3)中的元素?cái)?shù)。
我們使用ArrayList size()方法來(lái)獲取arraylist中的元素?cái)?shù)。
注意:ArrayList trimToSize()方法的工作不可見(jiàn)。
我們知道ArrayList的容量是動(dòng)態(tài)變化的。那么使用ArrayList trimToSize()方法的好處是什么?
要了解 trimToSize() 方法的優(yōu)勢(shì),我們需要知道ArrayList的工作原理。
在內(nèi)部,ArrayList使用一個(gè)數(shù)組來(lái)存儲(chǔ)它的所有元素?,F(xiàn)在,在某個(gè)點(diǎn),數(shù)組將被填滿。當(dāng)內(nèi)部數(shù)組已滿時(shí),將創(chuàng)建一個(gè)容量為當(dāng)前數(shù)組1.5倍的新數(shù)組。并且,所有元素都被移動(dòng)到新的數(shù)組中。
例如,假設(shè)內(nèi)部數(shù)組已滿,我們僅需添加1個(gè)元素。 在這里,ArrayList將以相同的比例擴(kuò)展(即前一個(gè)數(shù)組的1.5倍)。
在這種情況下,內(nèi)部數(shù)組中會(huì)有一些未分配的空間。因此,trimToSize()方法將刪除未分配的空間并更改arraylist的容量,使其等于arraylist中的元素?cái)?shù)。