給出您想要的最大數量的布爾值,生成可能的布爾組合的最優雅的方法是什麼?最優雅的方式來生成可能的布爾組合
例:
bool(1) -> [false], [true]
bool(2) -> [false, false], [false, true], [true, false], [true, true]
...
這是我目前實施:
public static List<Boolean[]> bool(int n) {
return IntStream.range(0, (int) Math.pow(2, n))
.mapToObj(i -> StringUtils.leftPad(Integer.toBinaryString(i), n, '0').chars().mapToObj(c -> c != '0').toArray(Boolean[]::new))
.collect(Collectors.toList());
}
但是我不太滿意的事實,我使用整數,然後映射到二進制與StringUtils.leftPad
和map
那返回Boolean[]
而不是boolean[]
。
有沒有一種更好的方式來使用Stream API在單線程中完成它?
從零剛開始和計數,使用整數類型作爲位域? – chrylis
這不是他在做什麼?轉換int->二進制字符串,然後char字符布爾值。 – Todd