如何将数组转换为 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());