Метод trimToSize
Метод trimToSize уменьшает емкость
динамического массива ArrayList до
текущего количества элементов в нем. Метод
не принимает параметров и не возвращает
значения. После вызова метода внутренний
массив будет иметь длину, равную размеру
списка, что позволяет освободить неиспользуемую
память.
Синтаксис
arrayList.trimToSize()
Пример
Давайте создадим список с запасом емкости и уменьшим ее до фактического размера:
import java.util.ArrayList;
public class Main
{
public static void main(String[] args)
{
ArrayList<Integer> list = new ArrayList<>(100);
list.add(1);
list.add(2);
list.add(3);
list.add(4);
list.add(5);
System.out.println("Размер списка: " + list.size());
list.trimToSize();
System.out.println("После trimToSize размер списка: " + list.size());
System.out.println("Содержимое списка: " + list);
}
}
Результат выполнения кода:
"Размер списка: 5"
"После trimToSize размер списка: 5"
"Содержимое списка: [1, 2, 3, 4, 5]"
Пример
Давайте рассмотрим ситуацию, когда после удаления элементов из списка остается большой объем неиспользуемой памяти:
import java.util.ArrayList;
public class Main
{
public static void main(String[] args)
{
ArrayList<String> list = new ArrayList<>(50);
list.add("a");
list.add("b");
list.add("c");
list.add("d");
list.add("e");
System.out.println("Исходный список: " + list);
list.remove("b");
list.remove("d");
System.out.println("После удаления: " + list);
System.out.println("Размер списка: " + list.size());
list.trimToSize();
System.out.println("После trimToSize: " + list);
System.out.println("Размер списка: " + list.size());
}
}
Результат выполнения кода:
"Исходный список: [a, b, c, d, e]"
"После удаления: [a, c, e]"
"Размер списка: 3"
"После trimToSize: [a, c, e]"
"Размер списка: 3"
Пример
Давайте убедимся, что метод trimToSize
не изменяет содержимое списка и его размер,
а только оптимизирует внутреннюю емкость:
import java.util.ArrayList;
public class Main
{
public static void main(String[] args)
{
ArrayList<Integer> list = new ArrayList<>(1000);
list.add(10);
list.add(20);
list.add(30);
int sizeBefore = list.size();
list.trimToSize();
int sizeAfter = list.size();
System.out.println("Размер до: " + sizeBefore);
System.out.println("Размер после: " + sizeAfter);
System.out.println("Список: " + list);
}
}
Результат выполнения кода:
"Размер до: 3"
"Размер после: 3"
"Список: [10, 20, 30]"
Смотрите также
-
класс
ArrayList,
который представляет динамический массив -
метод
ensureCapacity,
который увеличивает емкость списка -
метод
size,
который возвращает количество элементов -
метод
isEmpty,
который проверяет список на пустоту