ArrayList trimtosize不能正常工作

时间:2011-08-30 11:52:18

标签: java android arraylist

我有一个arraylist,其代码是:

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

我希望将ArrayList的大小限制为特定大小,即在我的情况下,当达到该数字时,将其限制为5。 这意味着0到5它的作用为ArrayList,当它达到5时,我想停止ArrayList的增长。

因为我正在使用:设置大小

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

但它不起作用,即尺寸增长不会停止,等于6,7等。

怎么做?还有其他办法吗?或者我的做法有什么问题?

由于

2 个答案:

答案 0 :(得分:7)

尺寸和容量是两回事。

说你有这个:

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

您的容量为5,但大小为0.

然后你添加一些数据:

data.add("hello");

然后你调用trimToSize:

data.trimToSize();

您的尺寸和容量现在都是1.

你到底想要做什么?可能有更好的方法:)

答案 1 :(得分:3)

trimToSize不会从列表中删除任何元素。来自the javadoc

  

将此ArrayList实例的容量调整为列表的当前容量   尺寸。应用程序可以使用此操作来最小化存储   一个ArrayList实例。

容量是ArrayList内部使用的数组的大小。如果列表包含6个元素且容量为10,则数组的最后4个元素为null。调用trimToSize只会使列表使用6而不是10的数组。

只要大小为5,就不要向列表中添加任何内容,而不是添加,然后尝试删除。