Java8新特性:映射
public static void main(String[] args) {
List list = Arrays.asList("aaa","bbb","ccc","ddd");
list.stream()
.map((x)-> x.toUpperCase())
.forEach((x) -> System.out.println(x));
}
这映射其实就是传一个函数型接口给里面,然后对所有元素都做一些操作。
package com;
import entity.Employee;
import java.util.Arrays;
import java.util.List;
public class Main {
static List employees = Arrays.asList(
new Employee("aa", 18, 99999.99),
new Employee("bb", 22, 222222.22),
new Employee("cc", 33, 23123.9),
new Employee("dd", 11, 139.99),
new Employee("ee", 23, 929.99),
new Employee("ff", 68, 1000.00)
);
public static void main(String[] args) {
employees.stream()
.map((x) -> x.getName())
.forEach((x)-> System.out.println(x));
}
}
flatmap 翻译的话就是平铺的意思,功能上也是,把流平铺,然后再组合为一个新的流。
里面传一个函数式接口,返回值是 一个流。
public static void main(String[] args) {
List list = Arrays.asList("aaa", "bbb", "ccc", "ddd");
list.stream()
.flatMap((x) -> {
x = x.toUpperCase();
List ll = new ArrayList<>();
for (int i = 0; i < x.length(); i++) {
char c = x.charAt(i);
ll.add(c);
}
return ll.stream();
})
.forEach((x) -> System.out.print(x+" "));
}
public static void main(String[] args) {
List list = Arrays.asList("aaa", "bbb", "ccc", "ddd");
Stream characterStream = list.stream()
.flatMap((x) -> {
x = x.toUpperCase();
List ll = new ArrayList<>();
for (int i = 0; i < x.length(); i++) {
char c = x.charAt(i);
ll.add(c);
}
return ll.stream();
});
Stream> streamStream = list.stream()
.map((x) -> {
x = x.toUpperCase();
List ll = new ArrayList<>();
for (int i = 0; i < x.length(); i++) {
char c = x.charAt(i);
ll.add(c);
}
return ll.stream();
});
}
有点类似 add 和addAll方法。
add如果是添加一个集合,就会把集合添加到里面作为一个元素,集合中会包含集合
addAll添加一个集合的话,就是把集合中的每一个元素都添加到里面作为每个单独的元素。
这里的flatmap就是 addAll类似的,把所有的流都合并下来,合并后,流中不包含流,也就是addAll中集合里面不包含集合。