我如何转换int[]到列表<整数>在Java?

当然,我对任何其他答案都感兴趣,而不是一项一项地循环计算。但如果没有其他答案,我将选择这个答案作为最好的答案,以表明这个功能不是Java的一部分。


当前回答

我将用不同的方法添加另一个答案;没有循环,而是一个匿名类,将利用自动装箱特性:

public List<Integer> asList(final int[] is)
{
    return new AbstractList<Integer>() {
            public Integer get(int i) { return is[i]; }
            public int size() { return is.length; }
    };
}

其他回答

在Java 8中:

int[] arr = {1,2,3};
IntStream.of(arr).boxed().collect(Collectors.toList());
   /* Integer[] to List<Integer> */



        Integer[] intArr = { 10, 20, 30, 40, 50, 60, 70, 80, 90, 100 };
        List<Integer> arrList = new ArrayList<>();
        arrList.addAll(Arrays.asList(intArr));
        System.out.println(arrList);


/* Integer[] to Collection<Integer> */


    Integer[] intArr = { 10, 20, 30, 40, 50, 60, 70, 80, 90, 100 };
    Collection<Integer> c = Arrays.asList(intArr);

同样值得一看的是这个bug报告,它以“Not a defect”和以下文本结尾:

“自动装箱整个数组不是指定的行为,这是有充分理由的。 对于大型阵列来说,它可能会非常昂贵。”

Arrays.stream(ints).forEach(list::add);

没有将int[]转换为List<Integer>作为数组的快捷方式。asList不处理装箱,只会创建一个List<int[]>,这不是你想要的。你必须创建一个实用方法。

int[] ints = {1, 2, 3};
List<Integer> intList = new ArrayList<Integer>(ints.length);
for (int i : ints)
{
    intList.add(i);
}