错误是,它在Collections.addAll(in,n)
中显示一条红线。
我该如何解决这个问题?
ArrayList<Integer> in = new ArrayList<>(); //declared array in integer type
int[] n = getResources().getIntArray(R.array.number12);
Collections.addAll(in,n); //this is not working showing error,it is not accepting
integers.xml
<resources>
<integer-array name="number12">
<item>735895698</item>`
<item>814895046</item>``
</integer-array>
</resources>
答案 0 :(得分:1)
这不起作用,因为int[]
- 数组不是Integer[]
- 数组,Collections.addAll()
可以预见。
这里有两种从数组创建列表的方法。这使用for-each循环迭代数组,然后将数组中的每个int
添加到list
:
int[] n = getResources().getIntArray(R.array.number12);
List<Integer> list = new ArrayList<>(n.length);
for(int i : n){
list.add(i);
}
另一种方式,是使用Java8引入的Arrays.stream()
:
int[] n = getResources().getIntArray(R.array.number12);
List<Integer> list = Arrays.stream(n)
.boxed()
.collect(Collectors.toList());
如果您明确想要获得ArrayList
,则可以使用以下内容:
int[] n = getResources().getIntArray(R.array.number12);
List<Integer> list = Arrays.stream(n)
.boxed()
.collect(Collectors.toCollection(ArrayList::new));
答案 1 :(得分:1)
快速修复:
ArrayList<Integer> in= new ArrayList<>();//declared array in integer type
Integer[] n=getResources().getIntArray(R.array.number12);
Collections.addAll(in,n);//this is not working showing error,it is not
如here所述,类型必须相同。
Collection
需要array
Integer
,而不是int
的数组