1、基础介绍
map-接收Lambda,将元素转换成其他形态或提取信息。接收一个函数作为参数,该函数会被应用到每隔元素上,并将其映射成一个新的元素;
List<Student> list = Arrays.asList(
new Student(1,"张三",60),
new Student(2,"李四",70),
new Student(3,"王五",80),
new Student(4,"赵六",90),
new Student(4,"赵六",90),
new Student(4,"赵六",90),
new Student(5,"田七",100));
@Test
public void test1(){
List<String> list = Arrays.asList("aaa","bbb","ccc");
list.stream().map((str) -> str.toUpperCase())
.forEach(System.out::println);
this.list.stream().map(Student::getName)
.forEach(System.out::println);
}
flatMap-接收一个函数作为参数,将流中的每个值都换成另一个流,然后把所有流连接成一个流
@Test
public void test2(){
List<String> list = Arrays.asList("aaa","bbb","ccc");
Stream<Stream<Character>> stream = list.stream()
.map(Test1::filterchar);// {{a,a,a},{b,b,b},{c,c,c}}
// 由于流中包含流,所有得要双重循环
stream.forEach((sm) -> sm.forEach(System.out::println));
Stream<Character> stream2 = list.stream()
.flatMap(Test1::filterchar);// {a,a,a,b,b,b,c,c,c}
stream2.forEach(System.out::println);
}
public static Stream<Character> filterchar(String str){
List<Character> list = new ArrayList<Character>();
for (Character ch : str.toCharArray()) {
list.add(ch);
}
return list.stream();
}