[英]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[])
会执行的操作,但仅对于int
, long
和double
的常规三重奏存在。
(这需要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.