如何将 int[] 转换为 List<Integer>? | Java Debug 笔记

本文正在参加「Java主题月 – Java Debug笔记活动」,详情查看<活动链接>

问题

Java 中,如何将 int[] 转换成 List<Integer>?

当然,除了循环逐项执行之外,我对任何其他答案都感兴趣。但是,如果没有其他更好的答案,我将选择其中一个作为最佳答案,以证明该功能不只是 Java 的一部分。

回答

回答1

Java8 中,可以这么实现:

int[] ints = {1,2,3};
List<Integer> list = Arrays.stream(ints).boxed().collect(Collectors.toList());
复制代码

回答2

也可以使用 com.google.common.primitives.Ints

List<Integer> Ints.asList(int...)
复制代码

回答3

我创建了一个新的方法,不使用循环,而采用一个匿名类,利用自动装箱特性:

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; }
    };
}
复制代码

回答4

最少代码实现:

public List<Integer> myWork(int[] array) {
    return Arrays.asList(ArrayUtils.toObject(array));
}
复制代码

其中,ArrayUtils 来自于 commons-lang 包。

回答5

如果您使用的是 Java 8,则可以使用 Stream API 将其转换为 List

List<Integer> list = Arrays.stream(arr)     // IntStream 
                                .boxed()        // Stream<Integer>
                                .collect(Collectors.toList());
复制代码

您还可以使用 IntStream 进行转换。

List<Integer> list = IntStream.of(arr) // return Intstream
                                    .boxed()        // Stream<Integer>
                                    .collect(Collectors.toList());
复制代码

还有其他外部库,例如 guavaapache commons 也可以将其转换。

总结

(译者补充总结)

上述回答中,各不相同,其实还有其它更多的实现方式,个人还是比较推荐直接采用 Java8 的新特性来实现,其效率很高,而且非常的优雅。

翻译内容来源Stack Overflow:stackoverflow.com/questions/1…

© 版权声明
THE END
喜欢就支持一下吧
点赞0 分享