java 8 stream api 中有两个方法map和flatMap非常实用,应用场景也非常广泛,能极大提升编程效率。下面我们详细介绍一下这两个方法的用法。
map方法
我们来看个示例:把一个整数列表转换成字符串列表,java 8之前常用的实现方法如下
List<Integer> numList = Arrays.asList(1, 2, 3, 4, 5, 6, 7, 8);
List<String> strList = new ArrayList<>();
for (int num : numList) {
strList.add(Integer.toString(num));
}
这种写法比较符合直觉,但略显繁琐。如果用java 8的stream api的map方法则可以把这个过程变的非常简洁
List<String> strList = numList.stream()
.map(it -> Integer.toString(it))
.collect(Collectors.toList());
map方法接受一个lambda表达式,这个表达式是一个函数,输入类型是集合元素的类型,输出类型是任意类型
it -> Integer.toString(it)
在示例中就是将集合中的整数元素逐个转换成字符串类型。这种写法和常规的编程思路不同,却有点像SQL
select id from table1
这条SQL语句读取一张表的id字段,id是int类型,我们将他转换成字符类型,实现方法如下
select