修改列表的一部分,然后返回更新的列表

时间:2015-09-25 16:00:00

标签: java java-8 java-stream

我正在玩Java 8并尝试使用stream()。我想要实现的是,我有一个列表[1,2,3,4],我希望将偶数24加倍,然后返回包含更新值的列表。所以,我会得到[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);

有办法做我想做的事吗?

1 个答案:

答案 0 :(得分:7)

filter方法会删除那些不符合条件的元素。它不会使其余的操作不适用。在map方法中移动条件。

myList = myList
   .stream()
   .map(n -> (n % 2 == 0) ? n*2 : n)
   .collect(Collectors.toList());