[英]Hot to port entrySet() method from HashMap<Integer,Object> to trove4j?
[英]How to set the size of TXXXXArrayList object from trove4j?
如何從Trove設置TXXXXArrayList對象的大小? 例如,是否可以設置TIntArrayList
的大小?
我發現的唯一方法是添加元素(零)。 即使是允許初始化或添加基本數組的批量方法,也會按元素進行復制,即使工作加倍。
雖然可以使用純java設置數組的大小:
int[] array = new int[1000000];
將創建並填充零。 Trove等效項執行兩次:
TIntArrayList array = new TIntArrayList(new int[1000000]);
首先,它分配原始數組,然后將其復制到類中。
一步怎么做?
更新
包裝方法可加快速度,但禁止隨着收益增長:
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);
}
}
您應該使用具有int容量的構造函數:
TIntArrayList( int capacity )
或使用“ ensureCapacity”方法:
ensureCapacity( int capacity )
因此,以您的示例為例: new TIntArrayList( 1000000 )
更新
為了“設置大小”(更好的說法是“填充”集合),我將使用“填充”方法。
fill( 0, 999999, 0 )
更新2
如果已經有一個具有所需值的數組,而不是“ fill”,請使用insert:
insert( 0, my_existing_array )
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.