Java 将int[]转换为boolean[]

Java 将int[]转换为boolean[],java,arrays,multiplication,Java,Arrays,Multiplication,在保证int[]只包含1s和0s的情况下,是否有任何聪明的方法将整数数组转换为布尔数组 即转换为: [0, 0, 1, 0, 0, 0, 1, 1] 到 当然,我可以循环使用int[],但我想知道是否还有更优雅的东西?可能类似于(新的int[]{0,0,1,0,0,0,1,1})*true?使用Java 8,您可以很容易地转换为布尔[],例如 Boolean[] bools = Arrays.stream(ints) .mapToObj(i -> i == 1)

在保证
int[]
只包含
1
s和
0
s的情况下,是否有任何聪明的方法将整数数组转换为布尔数组

即转换为:

[0, 0, 1, 0, 0, 0, 1, 1]


当然,我可以循环使用
int[]
,但我想知道是否还有更优雅的东西?可能类似于
(新的int[]{0,0,1,0,0,0,1,1})*true

使用Java 8,您可以很容易地转换为
布尔[]
,例如

Boolean[] bools = Arrays.stream(ints)
        .mapToObj(i -> i == 1)
        .toArray(Boolean[]::new);

但是没有一种简洁的方法可以创建
布尔[]

正如其他人所指出的,streams方法只能创建引用类型的数组,因此结果必须是一个装箱
布尔值的数组

以下是我要做的:

int[] intArray = { 0, 0, 1, 0, 0, 0, 1, 1 }; // input

boolean[] boolArray = new boolean[intArray.length];
IntStream.range(0, intArray.length).forEach(i -> boolArray[i] = intArray[i] != 0);
是的,这有副作用,但见鬼。这基本上就是
数组的功能。如果存在setAll(boolean[])
,它就可以做到,但它只存在于通常的
int
long
double
三个数组中


(这需要Java 8。)

不,在Java 8中没有优雅的方法可以做到这一点,您可以使用Stream。map@codequestioneer从Java8开始就有了,但结果是一个
Boolean[]
而不是
Boolean[]
@LuiggiMendoza,那么我不得不说对不起。我不是很了解Java8的最新版本,因为我必须让我的项目在Java1.6上运行:为什么会有反对票?这似乎是个明智的问题。
int[] intArray = { 0, 0, 1, 0, 0, 0, 1, 1 }; // input

boolean[] boolArray = new boolean[intArray.length];
IntStream.range(0, intArray.length).forEach(i -> boolArray[i] = intArray[i] != 0);