小编典典

如何转换列表在 Java 中转换为 int[]?

all

这类似于这个问题: How to convert int[] to Integer[] in
Java?

我是 Java 新手。如何在 Java 中将a
转换List<Integer>为?int[]我很困惑,因为List.toArray()实际上返回一个Object[],它可以转换为下界Integer[]int[].

现在我正在使用循环来这样做:

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

我确信有更好的方法来做到这一点。


阅读 105

收藏
2022-03-03

共1个答案

小编典典

不幸的是,由于 Java 处理原始类型、装箱、数组和泛型的性质,我不认为真的 有更好的方法来做到这一点。 特别是:

  • List<T>.toArray不会工作,因为没有从Integer到转换int
  • 您不能将int其用作泛型的类型参数,因此它 必须int- 特定方法(或使用反射来做讨厌的诡计的方法)。

我相信有些库对所有原始类型都有这种方法的自动生成版本(即,有一个为每种类型复制的模板)。这很丑陋,但恐怕就是这样:(

即使这个Arrays类在泛型进入
Java 之前就已经出现了,但如果它在今天被引入,它仍然必须包含所有可怕的重载(假设你想使用原始数组)。

2022-03-03