如何设置TXXXXArrayList对象的大小?例如,是否可以设置TIntArrayList的大小?
我发现的唯一方法是添加元素(零)。即使是允许初始化或添加基元数组的大容量方法,也会进行元素复制,即加倍工作。
虽然可以使用普通java设置数组的大小:
int[] array = new int[1000000];它将被创建并填充为零。等价物可以做到两倍:
TIntArrayList array = new TIntArrayList(new int[1000000]);首先它分配原始数组,然后在类中复制它。
一步怎么做?
更新
Wrap方法允许加快速度,但禁止增长作为回报:
TIntArrayList array = TIntArrayList.wrap(new int[1000000]);UPDATE2
容量不是那么大。下面的程序打印零并抛出ArrayIndexOutOfBoundsException
package tests.gnu.trove;
import gnu.trove.list.array.TIntArrayList;
public class Try_Capacity {
public static void main(String[] args) {
TIntArrayList array = new TIntArrayList(10);
array.ensureCapacity(10);
System.out.println(array.size());
array.set(5, 10);
}
}发布于 2014-06-30 21:07:05
您应该使用接受int容量的构造函数:
TIntArrayList( int capacity )或者使用"ensureCapacity“方法:
ensureCapacity( int capacity )因此,对于您的例子,只需做:new TIntArrayList( 1000000 )
更新
要“设置大小”(更好的方法是“填充”集合),我将使用“填充”方法。
fill( 0, 999999, 0 )更新2
如果您已经有了一个具有所需值的数组,而不是“填充”,请使用insert:
insert( 0, my_existing_array )https://stackoverflow.com/questions/24494438
复制相似问题