将int []转换为boolean []

时间:2015-01-17 16:54:42

标签: java arrays multiplication

将整数数组转换为布尔数组的任何巧妙方法,只要保证int[]只包含1 s和0 s?

即转换:

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

[false, false, true, false, false, false, true true]

当然,我可以循环int[],但我想知道那里有更优雅的东西吗?也许像(new int[]{0, 0, 1, 0, 0, 0, 1, 1}) * true

2 个答案:

答案 0 :(得分:1)

正如其他人所说,stream方法只能是引用类型的数组,因此结果必须是一个盒装Boolean值的数组。

以下是我要做的事情:

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);

是的,这是副作用,但是到底是什么。这基本上是Arrays.setAll(boolean[])存在时会执行的操作,但它仅适用于intlongdouble的常用三重奏。

(这需要Java 8。)

答案 1 :(得分:0)

使用Java 8,您可以轻松地转换为Boolean[],类似于

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

但是没有简洁的方法来创建boolean[]