【JavaSE】Stream流

发布时间 2023-12-13 22:22:49作者: 沙汀鱼

Stream作用:简化数组或集合的操作

获取Stream流对象

image

Stream流中间操作方法

image

  • 返回值都是Stream流对象,可以链式编程

Stream流终结操作方法

image

  • 返回值不再是Stream流对象

image

Stream收集操作

因为Stream流操作不会修改数据源,因此需要收集操作:将Stream流操作后到结果数据转回到集合

image

收集为双列集合案例

需求:
提取字符串中的姓名和年龄,筛选其中年龄>=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);
    }
}