如何将包含整数的ArrayList转换为原始int数组?我试图用下面的代码将包含Integer对象的ArrayList转换为原始int[],但是它会引发编译时错误。可以用Java进行转换吗?List<Integer> x = new ArrayList<Integer>();
int[] n = (int[])x.toArray(int[x.size()]);
3 回答

慕标5832272
TA贡献1966条经验 获得超4个赞
public static int[] convertIntegers(List<Integer> integers){ int[] ret = new int[integers.size()]; for (int i=0; i < ret.length; i++) { ret[i] = integers.get(i).intValue(); } return ret;}
integers
null
.)
LinkedList
:
public static int[] convertIntegers(List<Integer> integers){ int[] ret = new int[integers.size()]; Iterator<Integer> iterator = integers.iterator(); for (int i = 0; i < ret.length; i++) { ret[i] = iterator.next().intValue(); } return ret;}

阿波罗的战车
TA贡献1862条经验 获得超6个赞
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 worksint[] 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]
添加回答
举报
0/150
提交
取消