Stream作用:简化数组或集合的操作
获取Stream流对象
Stream流中间操作方法
- 返回值都是Stream流对象,可以链式编程
Stream流终结操作方法
- 返回值不再是Stream流对象
Stream收集操作
因为Stream流操作不会修改数据源,因此需要收集操作:将Stream流操作后到结果数据转回到集合
收集为双列集合案例
需求:
提取字符串中的姓名和年龄,筛选其中年龄>=24的人,并保存到Map集合中。
代码
import java.util.ArrayList;
import java.util.List;
import java.util.Map;
import java.util.function.Function;
import java.util.function.Predicate;
import java.util.stream.Collectors;
public class StreamDemo {
public static void main(String[] args) {
List<String> list = new ArrayList<>();
list.add("张三,23");
list.add("李四,24");
list.add("王五,25");
Map<String, Integer> map = list.stream().filter(new Predicate<String>() {
@Override
public boolean test(String s) {
return Integer.parseInt(s.split(",")[1]) >= 24;
}
}).collect(Collectors.toMap(new Function<String, String>() {
@Override
public String apply(String s) {
return s.split(",")[0];
}
}, new Function<String, Integer>() {
@Override
public Integer apply(String s) {
return Integer.parseInt(s.split(",")[1]);
}
}));
System.out.println(map);
}
}