首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何从TXXXXArrayList设置trove4j对象的大小?

如何从TXXXXArrayList设置trove4j对象的大小?
EN

Stack Overflow用户
提问于 2014-06-30 16:08:22
回答 1查看 193关注 0票数 0

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

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

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

代码语言:javascript
复制
int[] array = new int[1000000];

它将被创建并填充为零。等价物可以做到两倍:

代码语言:javascript
复制
TIntArrayList array = new TIntArrayList(new int[1000000]);

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

一步怎么做?

更新

Wrap方法允许加快速度,但禁止增长作为回报:

代码语言:javascript
复制
TIntArrayList array = TIntArrayList.wrap(new int[1000000]);

UPDATE2

容量不是那么大。下面的程序打印零并抛出ArrayIndexOutOfBoundsException

代码语言:javascript
复制
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);

    }
}
EN

回答 1

Stack Overflow用户

发布于 2014-06-30 21:07:05

您应该使用接受int容量的构造函数:

代码语言:javascript
复制
TIntArrayList( int capacity )

或者使用"ensureCapacity“方法:

代码语言:javascript
复制
ensureCapacity( int capacity )

因此,对于您的例子,只需做:new TIntArrayList( 1000000 )

更新

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

代码语言:javascript
复制
fill( 0, 999999, 0 )

更新2

如果您已经有了一个具有所需值的数组,而不是“填充”,请使用insert:

代码语言:javascript
复制
insert( 0, my_existing_array )
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/24494438

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档