繁体   English   中英

将int []转换为boolean []

[英]Convert int[] to boolean[]

在保证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吗?

正如其他人指出的那样,流方法只能引用类型的数组,因此结果必须是装箱的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的常规三重奏存在。

(这需要Java8。)

使用Java 8,您可以轻松将其转换为Boolean[] ,例如

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

但是,没有创建boolean[]巧妙方法。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM