Java 转换ArrayList的最快方法<;整数>;转换为int[]
可能重复:Java 转换ArrayList的最快方法<;整数>;转换为int[],java,arrays,arraylist,int,Java,Arrays,Arraylist,Int,可能重复: 在Java中,以下是最快的解决方案: public convert(ArrayList<Integer> IntegerList) { int s = IntegerList.size(); int[] intArray = new int[s]; for (int i = 0; i < s; i++) { intArray[i] = IntegerList.get(i).intValue(); } } publ
在Java中,以下是最快的解决方案:
public convert(ArrayList<Integer> IntegerList) {
int s = IntegerList.size();
int[] intArray = new int[s];
for (int i = 0; i < s; i++) {
intArray[i] = IntegerList.get(i).intValue();
}
}
public转换(ArrayList IntegerList){
int s=IntegerList.size();
int[]intArray=新的int[s];
对于(int i=0;i
?最快的方法是首先不要使用
ArrayList
。尝试包装int[]的TIntArrayList
,或者从一开始就使用int[]
如果出于某种原因必须使用ArrayList,但又无法修复它,则需要一种有效且性能不那么重要的方法
int[] ints = new int[list.size()];
for(int i=0, len = list.size(); i < len; i++)
ints[i] = list.get(i);
int[]ints=newint[list.size()];
for(int i=0,len=list.size();i
公共无效转换(ArrayList IntegerList){
int[]intArray=new int[IntegerList.size()];
整数计数=0;
for(int i:整数列表){
intArray[count++]=i;
}
}
更新:Q.但是foreach循环比常规for循环更快/更好/不同吗?答:我想不出比现在使用纯java更好的解决方案了。 然而,如果您使用,您可能可以简化它
public convert(List<Integer> list) {
int[] ar = Ints.toArray(list); //Ints is the class from Guava library
}
公共转换(列表){
int[]ar=Ints.toArray(list);//Ints是Guava库中的类
}
为什么不测试一些不同的解决方案并亲自查看呢?如果您想要整数[]
而不是整数[]
,ArrayList有一个内置的toArray
()方法。如果您需要int[]
,那么这个toArray
可能不是您的最佳选择。如果您想要速度,请查看jon skeets答案,如果您想要速度更改语言,请使用原语!OP寻找的是int[]
,而不是Integer[]
。你可以用Integer做任何事情,就像用int做任何事情一样。这就是为什么我发布了itExcept,它可以在不损失性能的情况下执行任意计算。我现在不知道答案,但foreach循环是否比常规for循环更快/更好/不同?我认为这是同一件事,用一种更简单的方法来写。什么是“常规循环”?编辑:啊,我明白了,foreach-over-for循环的优点是它可能使用迭代器而不是索引来访问列表,因此不依赖于O(1)中提供get(I)的列表。看看foreach循环是如何工作的。@BrianJ在这里@G.Bach谢谢你提供的信息@谢谢你提供的信息!OP用“<代码> > ARARYLISTAB/CODE >提出问题,在您的解决方案中,您不考虑花费时间来将<代码> ARARYLIST/<代码>转换为<代码> TIntArrayList < /Cord>。在开始时使用ARARYLIST的原因是,一旦我填写了AARAYLIST,就不知道它将包含多少元素。我需要一份副本以进一步加速。TIntArrayList可以是任何大小。为什么您需要一份副本?什么是TIntArrayList
?如果您不想包含一个额外的库,那么实现它就很简单了。
public void convert(ArrayList<Integer> IntegerList) {
int[] intArray = new int[IntegerList.size()];
int count = 0;
for(int i : IntegerList){
intArray[count++] = i;
}
}
public convert(List<Integer> list) {
int[] ar = Ints.toArray(list); //Ints is the class from Guava library
}