如何在Java中将List转换为int[]?

41 浏览
0 Comments

如何在Java中将List转换为int[]?

这个问题已经在这里有答案如何将包含整数的ArrayList转换为原始int数组?

如何在Java中将List转换为int[]

我感到困惑的是,List.toArray()实际上返回一个Object[],既不能转换为Integer[]也不能转换为int[]

现在我正在使用循环来完成此操作:

int[] toIntArray(List list) {
  int[] ret = new int[list.size()];
  for(int i = 0; i < ret.length; i++)
    ret[i] = list.get(i);
  return ret;
}

有更好的方法吗?

这与问题如何在Java中将int[]转换为Integer[]?类似。

admin 更改状态以发布 2023年5月20日
0
0 Comments

不幸的是,由于Java处理基本类型、装箱、数组和泛型的特性,我并不认为有更好的方法来解决这个问题。

  • List.toArray不起作用,因为没有从Integer转换为int的转换。
  • 您无法将int用作泛型的类型参数,因此必须是一个特定于int的方法(或使用反射进行不良操作的方法)。

我相信有一些库会对所有原始类型(即为每种类型复制一个模板)自动生成这种方法的版本。虽然这很丑陋,但这就是现实,我很遗憾。

即使在Java引入泛型之前,Arrays类已经出现了,但如果今天引入它(假设您要使用原始数组),它仍然必须包含所有令人讨厌的重载。

0
0 Comments

在Java 8中添加了流(Stream),我们可以编写代码:

int[] example1 = list.stream().mapToInt(i->i).toArray();
// OR
int[] example2 = list.stream().mapToInt(Integer::intValue).toArray();


思考过程:

0