我正在玩Java 8并尝试使用stream()。我想要实现的是,我有一个列表[1,2,3,4]
,我希望将偶数2
和4
加倍,然后返回包含更新值的列表。所以,我会得到[1,4,3,8]
。我尝试了以下操作,但它只返回了[4,8]
。
List<Integer> myList =
Arrays.asList(1,2,3,4);
myList = myList
.stream()
.filter(n -> n%2==0)
.map(n -> n*2)
.collect(Collectors.toList());
System.out.println(myList);
有办法做我想做的事吗?
答案 0 :(得分:7)
filter
方法会删除那些不符合条件的元素。它不会使其余的操作不适用。在map
方法中移动条件。
myList = myList
.stream()
.map(n -> (n % 2 == 0) ? n*2 : n)
.collect(Collectors.toList());