如何将ArrayList <integer>转换为int []?

时间:2015-05-31 08:38:59

标签: java android arraylist

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

例如,如果String包含{"One", "Two", "Three"},则 然后我想要一个包含int的{​​{1}}。

据我所知,唯一的方法是使用{0,1,2},因此我可以使用ArrayList方法。

以下是我用来做这个的代码:

add

但问题是我不知道如何将String[] names; ArrayList<Integer> MyList; for (int i = 0; i < names.length; i++){ MyList.add(i); } 更改为ArrayList<Integer>。 怎么办呢?

3 个答案:

答案 0 :(得分:1)

查看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];
  }

答案 1 :(得分:1)

如果您想创建一个从0到int[]的{​​{1}}数字数组,那么您就是这样做的:

names.length

答案 2 :(得分:1)

对于普通的Object类型,您只需使用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>而不是执行此转换,我强烈建议您这样做。您可以简单地使用现有集合而不是执行转换(如果您需要将原始数组传递给帮助程序或库方法,则扩展库以支持集合类型可能是更好的方法。)