繁体   English   中英

如何转换ArrayList <Integer> 到int []?

[英]How to convert ArrayList<Integer> to an int[]?

我有一个保存在strings.xml中的数组。
我想获取列表中有多少个项目,然后将其放在另一个列表中。

例如,如果String包含{"One", "Two", "Three"}
那么我想要一个包含{0,1,2}int

据我所知,唯一的方法是使用ArrayList ,所以我可以使用add方法。

这是我用来实现此目的的代码:

String[] names;
ArrayList<Integer> MyList;

for (int i = 0; i < names.length; i++){
  MyList.add(i);
}

但是问题是我不知道如何将ArrayList<Integer>更改为int[]
如何才能做到这一点?

签出ArrayList API

Integer[] stockArr = new Integer[yourList.size()];
stockArr = yourList.toArray(stockArr);

Java即使支持自动拆箱。

  int[] finalArr = new int[stockArray.length];
 for(int i=0;i<stackArray.length;i++ )
 {
      int[i] = stocArray[i];
  }

如果要创建一个从0到names.lengthint[]数字数组,请按以下步骤操作:

int[] numbers = new int[names.length];
for (int i = 0; i < names.length; i++) {
    numbers[i] = i;
}

对于普通的对象类型,您可以简单地使用ArrayList.toArray()方法将ArrayList转换为等效的对象数组。 但是,在这个问题中,您似乎也希望对原始类型进行拆箱。 为此,您只需要直接复制:

 private static int[] convertArrayListToPrimitiveArray(
     ArrayList<Integer> arrayList) {
   int count = arrayList.size();
   int[] result = new int[count];
   for (int i = 0; i < count; i++) {
     result[i] = arrayList.get(i);
   }
   return result;
 }

您可以像下面这样在代码中使用上面的函数:

ArrayList<Integer> original = ...
int[] equivalentAsArray = convertArrayListToPrimitiveArray(original);

话虽这么说,与Java代码中的原始数组相比,使用Java集合类型通常是首选/惯用的,并且这种转换不是免费的(与数组大小成比例的时间并最终导致重复的数量增加)。存储数据所需的内存)。 因此,如果您可以使用Iterable<Integer>List<Integer>ArrayList<Integer>代替执行此转换,则强烈建议您这样做。 您可能可以简单地使用现有集合而不是执行转换(如果需要将原始数组传递给帮助程序或库方法,则扩展库以支持集合类型可能是更好的方法)。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM