簡體   English   中英

如何設置trove4j中TXXXXArrayList對象的大小?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM