有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

i++在javastream的map方法中的应用

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

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],而不是可以从map(i -> i+1)获得的[2, 4, 2, 12]


共 (1) 个答案

  1. # 1 楼答案

    只需使用pre-increment而不是post-increment操作符

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

    此外,还可以使用Arrays.stream将整数数组用作流

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