i ++在java-stream的map方法中

时间:2018-09-10 09:01:43

标签: java java-stream

在代码中,我想通过i方法修改变量map()

Integer[] seq = {1, 3, 4, 1, 8, 11};

List<Integer> seqInt = Arrays.asList(seq);
List<Integer> seqFiltered = seqInt.stream().filter(i -> i%2!=0)
                                      .map(i -> i++)
                                      .collect(Collectors.toList());
System.out.println(seqFiltered);

但是,它输出[1, 3, 1, 11]而不是[2, 4, 2, 12]

1 个答案:

答案 0 :(得分:4)

只需使用前增量运算符而不是后增量运算符即可。

List<Integer> seqFiltered = seqInt.stream()
                                  .filter(i -> i%2!=0)
                                  .map(i -> ++i)
                                  .collect(Collectors.toList());

此外,您可以利用Arrays.stream将Integer数组用作流

List<Integer> seqFiltered = Arrays.stream(seq)
                                  .filter(i -> i % 2 != 0)
                                  .map(i -> ++i)
                                  .collect(Collectors.toList());