如果您正在使用 Java-8 还有另一种方法可以做到这一点。
int[] arr = list.stream().mapToInt(i -> i).toArray();
它的作用是:
Stream<Integer>
从列表中获取
IntStream
通过将每个元素映射到自身来获得一个(身份函数),将int
每个Integer
对象保存的值拆箱(自Java 5起自动完成)
int
通过调用获取数组toArray
您也可以intValue
通过方法引用显式调用,即:
int[] arr = list.stream().mapToInt(Integer::intValue).toArray();
还值得一提的是,NullPointerException
如果null
列表中有任何引用,您都可以获取。可以通过向流管道中添加如下过滤条件来轻松避免这种情况:
//.filter(Objects::nonNull) also works
int[] arr = list.stream().filter(i -> i != null).mapToInt(i -> i).toArray();
例:
List<Integer> list = Arrays.asList(1, 2, 3, 4);
int[] arr = list.stream().mapToInt(i -> i).toArray(); //[1, 2, 3, 4]
list.set(1, null); //[1, null, 3, 4]
arr = list.stream().filter(i -> i != null).mapToInt(i -> i).toArray(); //[1, 3, 4]