ArrayList триммер не работает Android - PullRequest
1 голос
/ 30 августа 2011

У меня есть arraylist и его код:

ArrayList<String> recentdata=new ArrayList<String>();

Я хочу ограничить размер ArrayList конкретным размером, т. Е. 5 в моем случае, когда он достигает этого числа.Это означает, что от 0 до 5 он работает как ArrayList, когда он достигает 5, я хочу остановить рост ArrayList.

. Для этого я использую: установить размер

if(recentdata.size() >= 5) {
    recentdata.trimToSize();
}

но он не работает, т.е. рост размера не останавливается, он идет 6,7 и т. Д.

Как это сделать?любой другой способ сделать это?или что не так в моем подходе?

Спасибо

Ответы [ 2 ]

7 голосов
/ 30 августа 2011

Размер и вместимость - это две разные вещи.

Скажем, у вас есть это:

ArrayList<String> data = new ArrayList<String>(5);

Ваша емкость равна 5, но размер равен 0.

Тогда выдобавьте некоторые данные:

data.add("hello");

Затем вы вызываете trimToSize:

data.trimToSize();

Ваш размер и вместимость теперь равны 1.

Что именно вы пытаетесь сделать?Вероятно, есть лучший способ сделать это:)

3 голосов
/ 30 августа 2011

trimToSize не удаляет элементы из списка. С Javadoc :

Обрезает емкость этого экземпляра ArrayList как текущую в списке размер. Приложение может использовать эту операцию, чтобы минимизировать хранение экземпляр ArrayList.

Емкость - это размер массива, используемого ArrayList внутри. Если ваш список содержит 6 элементов и имеет емкость 10, последние 4 элемента массива будут нулевыми. Вызов trimToSize просто заставит список использовать массив из 6 вместо 10.

Просто не добавляйте ничего в список, если его размер равен 5, вместо добавления, а затем попытки удаления.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...