将ArrayList转换为int[]的最快方法
问题原因:在给定的代码中,需要将ArrayList
解决方法:可以使用for-each循环遍历ArrayList
在给定的代码中,我们可以看到一个方法convert,它的参数是一个ArrayList
然而,这个问题的解决方法并不直接,需要使用for-each循环来遍历ArrayList
在这个的问题中,有人问到"regular loop"是什么意思。通过参考stackoverflow.com/questions/85190/…,我们了解到foreach循环相对于普通的for循环的优势在于它可能使用迭代器而不是索引来访问列表,因此不依赖于列表以O(1)的复杂度提供get(i)方法。
要快速将ArrayList
问题的原因:将ArrayList
解决方法:可以使用Guava库来简化转换过程。在Guava库中,有一个Ints类可以帮助我们将List
import com.google.common.primitives.Ints; ... public void convert(Listlist) { int[] ar = Ints.toArray(list); }
使用Guava库中的Ints类,可以将List
最快的方法是一开始就不使用ArrayList
如果因为某种原因必须使用ArrayList,而且不能修复它,那么你需要一种能够工作但性能较差的方法。
int[] ints = new int[list.size()];
for(int i=0, len = list.size(); i < len; i++)
ints[i] = list.get(i);
问题的提问者从一个ArrayList
一开始使用ArrayList的原因是我不知道它会包含多少元素,一旦我填充了ArrayList
TIntArrayList可以是任何大小的。你为什么需要一个副本呢?
TIntArrayList是什么?
如果你不想包含额外的库,那么实现它是很简单的。
TIntArrayList是一个用于包装int[]的类。你可以在trove4j.sourceforge.net/javadocs/gnu/trove/list/array/...找到更多信息。