0

如何从 Trove 设置 TXXXXArrayList 对象的大小?例如,是否可以设置的大小TIntArrayList

我发现的唯一方法是添加元素(零)。甚至允许初始化或添加原始数组的批量方法也会按元素进行复制,即加倍工作。

虽然可以使用普通 java 设置数组的大小:

int[] array = new int[1000000];

它将被创建并用零填充。Trove 等效项执行两次:

TIntArrayList array = new TIntArrayList(new int[1000000]);

首先它分配原始数组,然后将其复制到类中。

如何一步到位?

更新

Wrap 方法允许加速,但禁止作为收益增长:

TIntArrayList array = TIntArrayList.wrap(new int[1000000]);

更新2

容量不是大小。下面的程序打印零并抛出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);

    }
}
4

1 回答 1

0

您应该使用具有 int 容量的构造函数:

TIntArrayList( int capacity )

或使用“ensureCapacity”方法:

ensureCapacity( int capacity )

因此,对于您的示例,只需执行以下操作:new TIntArrayList( 1000000 )

更新

要“设置大小”(更好的说法是“填充”集合),然后我会使用“填充”方法。

fill( 0, 999999, 0 )

更新 2

如果您已经有一个包含所需值的数组,而不是“填充”,请使用插入:

insert( 0, my_existing_array )
于 2014-06-30T21:07:05.947 回答