【问题标题】:how to access the integer array using arraylist如何使用arraylist访问整数数组
【发布时间】:2018-06-14 13:06:26
【问题描述】:

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

整数.xml

<resources>
    <integer-array name="number12">
        <item>735895698</item>`
        <item>814895046</item>``
    </integer-array>
</resources>

【问题讨论】:

标签: java android


【解决方案1】:

这不起作用,因为 int[]-array 不是 Integer[]-array,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));

【讨论】:

  • OP 建议确实有效。只是类型需要相同。集合需要 Integer 的数组而不是 int 的数组
【解决方案2】:

快速修复:

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 需要 arrayInteger,而不是 int 的数组

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-07-15
    • 1970-01-01
    • 2021-02-21
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多