将Integer []转换为int []的最佳方法是什么?

afz*_*lex 7 java arrays

将Integer数组转换为int数组的最佳方法是什么?

它的简单解决方案是:

public int[] toPrimitiveInts(Integer[] ints) {
    int[] primitiveInts = new int[ints.length];
    for(int i = 0; i < ints.length; i++) {
        primitiveInts[i] = ints[i] == null ? 0 : ints[i];
    }
    return primitiveInts;
}
Run Code Online (Sandbox Code Playgroud)

在上面的例子中,我采用0null对象/包装器的默认值为null并且int为0这一事实的值.

这个答案显示了如何将int []转换为Integer []

但我找不到将Integer []转换为int []的简单方法.

Era*_*ran 9

您可以使用Java 8 Stream:

如果输入数组没有nulls:

Integer[] integerArr = ...
int[] arr = Arrays.stream(integerArr).mapToInt(Integer::intValue).toArray();
Run Code Online (Sandbox Code Playgroud)

并处理nulls:

Integer[] integerArr = ...
int[] arr = Arrays.stream(integerArr).mapToInt(i -> i != null ? i : 0).toArray();
Run Code Online (Sandbox Code Playgroud)

  • 请注意,这不会像OP的代码那样处理空值(也不是我的答案;但是这是由旁边的). (2认同)
  • 什么是`integerArr`?一个`List`或它应该是`Arrays.stream(integerArr)...`?而`null`会发生什么 - 因为作者在发布的代码中检查它,它会成为一个问题 (2认同)