这段时间在学习JDK8的特性,感觉收获很多。今天来写一篇关于JDK8中Stream流的使用。
在下面的代码中,我想将numberList2集合中的数据进行转换,生成一个新的集合。
package com.stream.main;
import java.util.Arrays;
import java.util.List;
import java.util.stream.Collectors;
public class StreamTest7 {
public static void main(String[] args) {
streamMapTest2();
}
/**
* 函数2:测试 Stream 流中 map() 函数
*
* @author moon 2020/11/25 15:44
*/
public static void streamMapTest2() {
List<Integer> numberList2 = Arrays.asList(2, 3, 4, 5);
List<Integer> numberList3 = numberList2.stream()
.map(x -> {
x = x + 17;
return x;
})
.filter(x -> x % 2 == 0)
.limit(3)
.collect(Collectors.toList());
for (Integer num : numberList2) {
System.out.println("num2为: " + num + " ");
}
System.out.println("-------------------------------------");
for (Integer num : numberList3) {
System.out.println("num3为: " + num + " ");
}
}
}
代码运行结果如下所示:
----------------------------
num2为: 2
num2为: 3
num2为: 4
num2为: 5
-------------------------------------
num3为: 20
num3为: 22
在上面的代码中,我们可以看到,numberList2集合,经过一系列变化操作后,numberList2集合中的各个元素其实没有做任何改变, 新生成的 numberList3 集合是 numberList2 集合转化后的结果。
在这里,map()函数的操作非常有用,希望能够帮到各位。
当然,map()函数中的 lambda 表达式也有其他的写法,在这里我就不一一例举了。