Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/341.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 修改部分列表,然后返回更新的列表_Java_Java 8_Java Stream - Fatal编程技术网

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

Java 修改部分列表,然后返回更新的列表,java,java-8,java-stream,Java,Java 8,Java Stream,我正在玩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 -

我正在玩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);
列出我的列表=
asList(1,2,3,4);
myList=myList
.stream()
.filter(n->n%2==0)
.map(n->n*2)
.collect(Collectors.toList());
System.out.println(myList);

有什么方法可以满足我的要求吗?

使用
filter
方法删除不符合条件的元素。它不会使其他操作不适用。将条件移动到
map
方法中

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

filter
方法删除不符合条件的元素。它不会使其他操作不适用。将条件移动到
map
方法中

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

你在不必要地过滤列表你在不必要地过滤列表因此,如果我有多个条件,我必须将所有内容都放在映射()中?还有更优雅的方式吗?是的。
map
的目的是将一个值更改为另一个值,而不是
filter
,其目的是删除不符合条件的元素。对我来说,这似乎足够优雅。@xcoder-您可以(应该)使用方法引用来进行更复杂的操作。myList.stream().map(this::conditionallyMapSomeElements.collect(Collectors.toList());因此,如果我有多个条件,我必须将所有内容都放在map()中?还有更优雅的方式吗?是的。
map
的目的是将一个值更改为另一个值,而不是
filter
,其目的是删除不符合条件的元素。对我来说,这似乎足够优雅。@xcoder-您可以(应该)使用方法引用来进行更复杂的操作。myList.stream().map(this::conditionallyMapSomeElements.collect(Collectors.toList());