我有boolean[]
,我想转为List<Integer>
。列表中的每个项目都是boolean[]
的索引,其索引必须为true
。
现在我仍然坚持使用这段代码:
Stream.of(sieve)
.filter(x->x.equals(true))
.mapToInt(???)
.collect(toList());
关于如何实现这一点的任何想法(当然有流)?
答案 0 :(得分:0)
您必须使用Stream
将索引引入IntStream::range
管道。
boolean[] sieve = sieve();
int[] numbers = IntStream.range(0, sieve.length).filter(i -> sieve[i]).toArray();
或者如果您想要List<Integer>
作为结果:
List<Integer> = IntStream.range(0, sieve.length).filter(i -> sieve[i])
.boxed().collect(Collectors.toList());