如何在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);
给定的数组:
int[] givenArray = {2,2,3,3,4,5};
将整数数组转换为整数列表
一种方法:boxxed() ->返回IntStream
List<Integer> givenIntArray1 = Arrays.stream(givenArray)
.boxed()
.collect(Collectors.toList());
第二种方法:将流的每个元素映射为Integer,然后收集
注意:
使用mapToObj你可以隐蔽每个int元素到字符串流,字符流等套管i (char)i
List<Integer> givenIntArray2 = Arrays.stream(givenArray)
.mapToObj(i->i)
.collect(Collectors.toList());
将一个数组类型转换为另一个类型示例:
List<Character> givenIntArray2 = Arrays.stream(givenArray)
.mapToObj(i->(char)i)
.collect(Collectors.toList());
如果你的目标是Java 8(或更高版本),你可以试试这个:
int[] numbers = new int[] {1, 2, 3, 4};
List<Integer> integers = Arrays.stream(numbers)
.boxed().collect(Collectors.<Integer>toList());
注意:
注意collector .<Integer>toList(),这个泛型方法可以帮助你避免错误“类型不匹配:不能从List<Object>转换到List<Integer>”。