我有一个arraylist,其代码是:
ArrayList<String> recentdata=new ArrayList<String>();
我希望将ArrayList
的大小限制为特定大小,即在我的情况下,当达到该数字时,将其限制为5。
这意味着0到5它的作用为ArrayList
,当它达到5时,我想停止ArrayList
的增长。
因为我正在使用:设置大小
if(recentdata.size() >= 5) {
recentdata.trimToSize();
}
但它不起作用,即尺寸增长不会停止,等于6,7等。
怎么做?还有其他办法吗?或者我的做法有什么问题?
由于
答案 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,就不要向列表中添加任何内容,而不是添加,然后尝试删除。