如何使用arraylist访问整数数组

时间:2018-06-14 13:06:27

标签: java android

错误是,它在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>

2 个答案:

答案 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的数组