【发布时间】:2011-02-06 03:06:22
【问题描述】:
如何在 Java 中将数组转换为列表?
我使用了Arrays.asList(),但行为(和签名)不知何故从 Java SE 1.4.2(文档现在存档)更改为 8,我在网上找到的大多数 sn-ps 使用 1.4.2 行为.
例如:
int[] spam = new int[] { 1, 2, 3 };
Arrays.asList(spam)
- 在 1.4.2 上返回一个包含元素 1、2、3 的列表
- 在 1.5.0+ 上返回一个包含数组 spam 的列表
在许多情况下,它应该很容易被发现,但有时它可能会被忽视:
Assert.assertTrue(Arrays.asList(spam).indexOf(4) == -1);
【问题讨论】:
-
我认为你的例子被打破了:
Arrays.asList(new int[] { 1, 2, 3 });绝对没有在 Java 1.4.2 中编译,因为int[]不是Object[]。 -
哦,你可能是对的。在发布之前,我没有 Java 1.4.2 编译器来测试我的示例。现在,在您的评论和乔的回答之后,一切都变得更有意义了。
-
我认为 Autoboxing 会涵盖从原始到包装 Integer 类的转换。您可以先自己制作演员表,然后上面的
Arrays.asList代码应该可以工作。 -
Java 8 的 Stream.boxed() 将负责自动装箱并可用于此目的。看我的回答below。
-
Java 8 解决方案:stackoverflow.com/questions/2607289/…
标签: java arrays list data-conversion