如何将数组转换为 Java 中的列表?
我使用了Arrays.asList()
但行为(和签名)以某种方式从 Java SE 1.4.2 (现在归档的文档)变为8 ,我在网上找到的大多数片段都使用 1.4.2 行为。
例如:
int[] spam = new int[] { 1, 2, 3 };
Arrays.asList(spam)
在许多情况下,它应该很容易被发现,但有时它可能会被忽视:
Assert.assertTrue(Arrays.asList(spam).indexOf(4) == -1);
在您的示例中,这是因为您不能拥有基本类型的 List。换句话说, List<int>
是不可能的。
但是,您可以使用包装int
原语的Integer
类来创建List<Integer>
。使用Arrays.asList
实用程序方法将数组转换为List
。
Integer[] spam = new Integer[] { 1, 2, 3 };
List<Integer> list = Arrays.asList(spam);
请参阅IdeOne.com 上的此代码 。
谈到转换方式,这取决于你为什么需要你的List
。如果您需要它只是为了读取数据。好的,你走了:
Integer[] values = { 1, 3, 7 };
List<Integer> list = Arrays.asList(values);
但是如果你做这样的事情:
list.add(1);
你得到java.lang.UnsupportedOperationException
。所以在某些情况下你甚至需要这个:
Integer[] values = { 1, 3, 7 };
List<Integer> list = new ArrayList<Integer>(Arrays.asList(values));
第一种方法实际上不转换数组,但 “代表” 它就像一个List
。但是数组是所有属性的固定数量的元素。请注意,在构造ArrayList
时需要指定类型。
在 Java 8 中,您可以使用流:
int[] spam = new int[] { 1, 2, 3 };
Arrays.stream(spam)
.boxed()
.collect(Collectors.toList());