将整数数组转换为布尔数组的任何巧妙方法,只要保证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
?
答案 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[])
存在时会执行的操作,但它仅适用于int
,long
和double
的常用三重奏。
(这需要Java 8。)
答案 1 :(得分:0)
使用Java 8,您可以轻松地转换为Boolean[]
,类似于
Boolean[] bools = Arrays.stream(ints)
.mapToObj(i -> i == 1)
.toArray(Boolean[]::new);
但是没有简洁的方法来创建boolean[]
。