本文正在参加「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());
复制代码
还有其他外部库,例如 guava
和 apache commons
也可以将其转换。
总结
(译者补充总结)
上述回答中,各不相同,其实还有其它更多的实现方式,个人还是比较推荐直接采用 Java8
的新特性来实现,其效率很高,而且非常的优雅。
翻译内容来源Stack Overflow:stackoverflow.com/questions/1…
© 版权声明
文章版权归作者所有,未经允许请勿转载。
THE END