我有一个保存在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>
。
怎么办呢?
答案 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>
而不是执行此转换,我强烈建议您这样做。您可以简单地使用现有集合而不是执行转换(如果您需要将原始数组传递给帮助程序或库方法,则扩展库以支持集合类型可能是更好的方法。)