📅  最后修改于: 2023-12-03 15:31:28.636000             🧑  作者: Mango
trimToSize()
是 ArrayList
类的一个方法,它用于将 ArrayList
的容量削减到实际存储大小。调用 trimToSize()
后,ArrayList
的容量将变为当前存储元素的数量,从而节省内存空间。
以下是 trimToSize()
方法的语法格式:
public void trimToSize()
当 ArrayList
中的元素被删除时,其内存不会自动减少。因此,如果你有一个 ArrayList
中保存的元素数量较少,而你想节省内存,则可以使用 trimToSize()
方法将其容量调整为实际大小。这里需要注意的是,当 ArrayList
中的元素被添加时,它的容量会自动增长,这种自动增长可以保证 ArrayList
中的元素能够得到合适的存储。
下面是一个使用 trimToSize()
的示例:
import java.util.ArrayList;
public class ArrayListExample {
public static void main(String[] args) {
ArrayList<String> list = new ArrayList<>();
list.add("java");
list.add("python");
list.add("c++");
list.add("php");
System.out.println("List size before trimToSize() : " + list.size());
System.out.println("List capacity before trimToSize() : " + getCapacity(list));
list.trimToSize();
System.out.println("List size after trimToSize() : " + list.size());
System.out.println("List capacity after trimToSize() : " + getCapacity(list));
}
public static int getCapacity(ArrayList<?> list) {
try {
java.lang.reflect.Field capField =
ArrayList.class.getDeclaredField("elementData");
capField.setAccessible(true);
return ((Object[]) capField.get(list)).length;
} catch (Exception e) {
return -1;
}
}
}
输出结果:
List size before trimToSize() : 4
List capacity before trimToSize() : 10
List size after trimToSize() : 4
List capacity after trimToSize() : 4
在上面的示例中,我们创建了一个 ArrayList
,并添加了一些元素。我们使用 getCapacity()
方法来获取存储 ArrayList
元素的数组数组的大小,从而获取其容量。
在调用 trimToSize()
方法之前,ArrayList
中的元素数量为4,但其容量为10。但是,当我们调用 trimToSize()
方法之后,ArrayList
的容量已经被削减至实际存储的大小,因此其容量变为4。
trimToSize()
方法用于将 ArrayList
的容量削减到实际存储大小。trimToSize()
方法后,ArrayList
的容量将变为当前存储元素的数量。trimToSize()
方法可用于节省内存空间。ArrayList
中添加元素时,其自动增长以保证元素能够得到合适的存储。