Java 修改部分列表,然后返回更新的列表
我正在玩Java 8并尝试使用stream()。我想要实现的是,我有一个列表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 -
[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());