如何在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版本
Java 7
Arrays.asList(1, 2, 3);
OR
final String arr[] = new String[] { "G", "E", "E", "K" };
final List<String> initialList = new ArrayList<String>() {{
add("C");
add("O");
add("D");
add("I");
add("N");
}};
// Elements of the array are appended at the end
Collections.addAll(initialList, arr);
OR
Integer[] arr = new Integer[] { 1, 2, 3 };
Arrays.asList(arr);
在Java 8中
int[] num = new int[] {1, 2, 3};
List<Integer> list = Arrays.stream(num)
.boxed().collect(Collectors.<Integer>toList())
参考资料- http://www.codingeek.com/java/how-to-convert-array-to-list-in-java/
说到转换方式,这取决于你为什么需要你的列表。
如果你只需要读取数据。好的,给你:
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));
第一种方法实际上不转换数组,但“表示”它像一个列表。但是数组的所有属性都在底层,比如固定数量的元素。请注意,在构造ArrayList时需要指定类型。