繁体   English   中英

谓词结合Java8中的映射

[英]Predicate in conjunction with a map in java8

在Java8的映射中,有没有一种比下面更容易/更简洁的方法来使用谓词?

public static void main(String[] args) {
        List<Integer> test = new ArrayList<>();
        test.add(1);
        test.add(2);
        test.add(3);
        test.add(4);

        List<Integer> test2 = test.stream()
            .map(i -> { if (i % 2 == 0) return i; else return 0;})
            .collect(toList());

        for (int i = 0; i < test2.size(); i++)
        {
            System.out.println(test2.get(i));
        }
    }

Output:
0
2
0
4

本质上,我只想在测试列表的成员奇怪的情况下对其进行转换。

您的代码的简洁版本:

List<Integer> test = new ArrayList<>(Arrays.asList(1, 2, 3, 4));

List<Integer> test2 = test.stream()
                          .map(i -> i % 2 == 0 ? i : 0)
                          .collect(toList());
test2.forEach(System.out::println);

这个?

IntStream.rangeClosed(1, 4).map(i -> i % 2 == 0 ? i : 0).forEach(System.out::println);

或者,如果您想要流中的偶数(例如,从2开始),为什么不选择这个?

IntStream.iterate(2, i -> i + 2).limit(2).forEach(System.out::println);

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM