![](/img/trans.png)
[英]how to convert ArrayList<ArrayList<Integer>> to 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.length
的int[]
数字数组,请按以下步骤操作:
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.