廖雪峰Java16函数式编程-2Stream-4map
Posted csj2018
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了廖雪峰Java16函数式编程-2Stream-4map相关的知识,希望对你有一定的参考价值。
1. map()简介
Stream.map()是一个Stream的转换方法,把一个stream转换为另一个Stream,这2个Stream是按照映射函数一一对应的。
所谓map操作,就是把一种操作运算映射到序列的每个元素上。
例如:f(x)=x^2,对x计算它的平方,把这个函数映射到一个序列1, 2, 3, 4, 5,就得到另一个序列1, 4, 9, 16, 25。这2个Stream是按照映射函数一一对应的
Stream<Integer> s = Stream.of(1, 2, 3, 4, 5);
Stream<Integer> s2 = s.map((n)->n*n);
2. map过程
map()接收的Function的接口,负责把1个T类型转换为R类型
<R> Stream<R> map(Function<? super T, ? extends R> mapper);
@FunctionalInterface
public interface Function<T, R>
R apply(T t);
3. map示例
3.1 使用map获取全部大写的Stream
public class StreamMapSample
public static void main(String[] args)
String[] array = "Stream API supports functional-style operation".split(" ");
Stream<String> stream = Arrays.stream(array);
stream.map(String::toUpperCase).forEach(System.out::println);
3.2 将String类型转换为Person类型
import java.util.Arrays;
import java.util.stream.Stream;
class Person
String name;
char gener;
public Person(String name,char gender)
this.name = name;
this.gener = gender;
public String toString()
return "Person( "+name+", "+gener+" )";
public class StreamMapSample2
public static void main(String[] args)
String[] inputs = "Bob,M","Alice,F","Time,M","Lily,F";
Stream<String> names = Arrays.stream(inputs);
Stream<Person> persons = names.map((s)->
int n = s.indexOf(",");
String name = s.substring(0,n);
char gender = s.charAt(n+1);
return new Person(name,gender);
);
persons.forEach(System.out::println);
4. 总结:
map()方法:
- 将一个Stream的每个元素映射成另一个元素并生成一个新的Stream
- 可以将一种元素类型转换成另一种元素类型
以上是关于廖雪峰Java16函数式编程-2Stream-4map的主要内容,如果未能解决你的问题,请参考以下文章