如何在Java中将数组转换为列表?

我使用了Arrays.asList(),但行为(和签名)不知怎么地从Java SE 1.4.2(文档现在存档)改变到8,我在web上找到的大多数代码片段都使用1.4.2行为。

例如:

int[] numbers = new int[] { 1, 2, 3 };
Arrays.asList(numbers)

在1.4.2返回一个包含元素1,2,3的列表 在1.5.0+上返回包含数组'numbers'的列表

在许多情况下,它应该很容易被发现,但有时它会被忽视:

Assert.assertTrue(Arrays.asList(numbers).indexOf(4) == -1);

当前回答

从Java 8开始,应该执行以下操作

int[] temp = {1, 2, 3, 4, 5};
List<Integer> tempList = Arrays.stream(temp).boxed().collect(Collectors.toList());

其他回答

你必须转换为数组

Arrays.asList((Object[]) array)

在Java 9中,您可以通过新的方便的工厂方法List.of使用更优雅的不可变列表:

List<String> immutableList = List.of("one","two","three");

(无耻地从这里抄袭)

在您的示例中,这是因为您不能拥有原始类型的List。换句话说,List<int>是不可能的。

但是,您可以使用包装int原语的Integer类来拥有一个List<Integer>。使用数组将数组转换为List。asList实用程序方法。

Integer[] numbers = new Integer[] { 1, 2, 3 };
List<Integer> list = Arrays.asList(numbers);

请在IdeOne.com上查看实时运行的代码。

一行程序:

List<Integer> list = Arrays.asList(new Integer[] {1, 2, 3, 4});

使用番石榴: Integer[] array = {1,2,3}; List<Integer> List = Lists.newArrayList(sourceArray); 使用Apache Commons Collections: Integer[] array = {1,2,3}; List<Integer> List = new ArrayList<>(6); CollectionUtils。addAll(列表、数组);