如何将 int[] 转换为 List在Java中?
如何在 Java 中将 int[]
转换为 List
?
当然,除了逐项循环执行之外,我对任何其他答案都感兴趣。 但如果没有其他答案,我会选择这个答案作为最好的答案,以表明该功能不是 Java 的一部分。
How do I convert int[]
into List<Integer>
in Java?
Of course, I'm interested in any other answer than doing it in a loop, item by item. But if there's no other answer, I'll pick that one as the best to show the fact that this functionality is not part of Java.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(21)
流
int
数组的流。 调用Arrays.stream
或IntStream.of
。IntStream#boxed
使用从int
原语到Integer
对象。Stream#toList()
。示例:
在 Java 16 及更高版本中:
Streams
int
array. Call eitherArrays.stream
orIntStream.of
.IntStream#boxed
to use boxing conversion fromint
primitive toInteger
objects.Stream.collect( Collectors.toList() )
. Or more simply in Java 16+, callStream#toList()
.Example:
In Java 16 and later:
没有从
int[]
转换为List
的快捷方式,因为Arrays.asList
不处理装箱,只会创建一个List
这不是你想要的。 你必须制定一个实用方法。There is no shortcut for converting from
int[]
toList<Integer>
asArrays.asList
does not deal with boxing and will just create aList<int[]>
which is not what you want. You have to make a utility method.同样来自番石榴库。 .. com.google.common.primitives.Ints:
Also from guava libraries... com.google.common.primitives.Ints:
Arrays.asList 将无法像其他一些答案所期望的那样工作。
此代码将不会创建包含 10 个整数的列表。 它将打印 1,而不是 10:
这将创建一个整数列表:
如果您已经有了整数数组,则没有快速转换方法,您需要最好用循环。
另一方面,如果您的数组中有对象,而不是基元,则 Arrays.asList 将起作用:
Arrays.asList will not work as some of the other answers expect.
This code will not create a list of 10 integers. It will print 1, not 10:
This will create a list of integers:
If you already have the array of ints, there is not quick way to convert, you're better off with the loop.
On the other hand, if your array has Objects, not primitives in it, Arrays.asList will work:
我将用不同的方法添加另一个答案; 没有循环,而是一个将利用自动装箱功能的匿名类:
I'll add another answer with a different method; no loop but an anonymous class that will utilize the autoboxing features:
最小的代码是:
其中 ArrayUtils 来自 commons-lang :)
The smallest piece of code would be:
where ArrayUtils comes from commons-lang :)
在 Java 8 中使用流:
或使用收集器
In Java 8 with stream:
or with Collectors
在 Java 8 中:
In Java 8 :
如果您使用的是java 8,我们可以使用流API将其转换为列表。
您也可以使用 IntStream 进行转换。
还有其他外部库,例如 guava 和 apache commons
也可以将其转换。
干杯。
If you are using java 8, we can use the stream API to convert it into a list.
You can also use the IntStream to convert as well.
There are other external library like guava and apache commons
also available convert it.
cheers.
还值得查看此错误报告,该报告已关闭,原因是“不”一个缺陷”和以下文本:
“整个数组的自动装箱不是指定的行为,这是有充分理由的。
对于大型阵列来说,它的成本可能高得令人望而却步。”
It's also worth checking out this bug report, which was closed with reason "Not a defect" and the following text:
"Autoboxing of entire arrays is not specified behavior, for good reason.
It can be prohibitively expensive for large arrays."
请参阅此
see this
尝试一下这个类:
测试用例:
give a try to this class:
testcase:
最好的镜头:
例子:
The best shot:
Examples:
这是另一种可能性,同样是 Java 8 Streams:
Here is another possibility, again with Java 8 Streams:
那这个呢:
What about this:
如果您愿意使用第三方库,这将适用于 Eclipse Collections:
注意:我是 Eclipse Collections 的提交者。
If you're open to using a third party library, this will work in Eclipse Collections:
Note: I am a committer for Eclipse Collections.
这是一个解决方案:
输出:
Here is a solution:
Output:
您可以使用 IntStream of 并将其装箱为 Integer,然后使用反向比较器进行排序。
这种方法的优点是更加灵活,因为您可以使用不同的收集器来创建不同类型的列表(例如,ArrayList、LinkedList 等)。
You could use IntStream of and boxed it to Integer after that sorted using reverseOrder comparator.
This approach has the advantage of being more flexible, as you can use different collectors to create different types of lists (e.g., an ArrayList, a LinkedList, etc.).
这是将数组转换为 ArrayList 的通用
方法
Here is a generic way to convert array to ArrayList
Usage