使用流将数组索引映射到List

时间:2016-04-27 13:37:24

标签: java java-8 java-stream

我有boolean[],我想转为List<Integer>。列表中的每个项目都是boolean[]的索引,其索引必须为true。 现在我仍然坚持使用这段代码:

Stream.of(sieve)
        .filter(x->x.equals(true))
        .mapToInt(???)
        .collect(toList());

关于如何实现这一点的任何想法(当然有流)?

1 个答案:

答案 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());