将ArrayList转换为int[]的最快方法

15 浏览
0 Comments

将ArrayList转换为int[]的最快方法

在Java中,以下是否是最快的解决方案:\n

public int[] convert(ArrayList IntegerList) {
    int s = IntegerList.size();
    int[] intArray = new int[s];
    for (int i = 0; i < s; i++) {
        intArray[i] = IntegerList.get(i).intValue();
    }
    return intArray;
}

0
0 Comments

问题原因:在给定的代码中,需要将ArrayList转换为int[],但是没有提供直接的方法来实现这个转换。

解决方法:可以使用for-each循环遍历ArrayList,并将每个元素赋值给int[]数组的相应位置。这样就可以将ArrayList转换为int[]。

在给定的代码中,我们可以看到一个方法convert,它的参数是一个ArrayList。这个方法的目标是将ArrayList转换为int[]。代码首先创建一个与ArrayList大小相等的int[]数组intArray。然后,使用for-each循环遍历ArrayList,并将每个元素赋值给intArray的相应位置。最后,返回转换后的intArray。

然而,这个问题的解决方法并不直接,需要使用for-each循环来遍历ArrayList。这引发了一个问题:for-each循环是否比普通的for循环更快/更好/不同?对此,我们可以从这里找到答案。

在这个的问题中,有人问到"regular loop"是什么意思。通过参考stackoverflow.com/questions/85190/…,我们了解到foreach循环相对于普通的for循环的优势在于它可能使用迭代器而不是索引来访问列表,因此不依赖于列表以O(1)的复杂度提供get(i)方法。

要快速将ArrayList转换为int[],可以使用for-each循环遍历ArrayList并将每个元素赋值给int[]数组的相应位置。这样做的好处是可以更快地完成转换,而不需要使用普通的for循环。

0
0 Comments

问题的原因:将ArrayList转换为int[]数组是一个常见的需求,但是在纯Java中没有更好的解决方法。

解决方法:可以使用Guava库来简化转换过程。在Guava库中,有一个Ints类可以帮助我们将List转换为int[]数组。具体代码如下:

import com.google.common.primitives.Ints;
...
public void convert(List list) {
    int[] ar = Ints.toArray(list);
}

使用Guava库中的Ints类,可以将List转换为int[]数组,从而实现将ArrayList转换为int[]数组的功能。

0
0 Comments

最快的方法是一开始就不使用ArrayList。尝试使用TIntArrayList来包装int[],或者从一开始就使用int[]。

如果因为某种原因必须使用ArrayList,而且不能修复它,那么你需要一种能够工作但性能较差的方法。

int[] ints = new int[list.size()];

for(int i=0, len = list.size(); i < len; i++)

ints[i] = list.get(i);

问题的提问者从一个ArrayList开始,但你的解决方案没有考虑将ArrayList转换为TIntArrayList所花费的时间。

一开始使用ArrayList的原因是我不知道它会包含多少元素,一旦我填充了ArrayList,我需要一个副本以进一步提速。

TIntArrayList可以是任何大小的。你为什么需要一个副本呢?

TIntArrayList是什么?

如果你不想包含额外的库,那么实现它是很简单的。

TIntArrayList是一个用于包装int[]的类。你可以在trove4j.sourceforge.net/javadocs/gnu/trove/list/array/...找到更多信息。

0