使用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
基本上,我想只转换我的测试列表的成员,如果它们是奇数。
答案 0 :(得分:2)
您的代码的简洁版本:
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);
答案 1 :(得分:1)
这一个?
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);