【java基础】之lambda表达式

1,Stream(管道)

1. 什么是Stream
(1)Stream在Java8中被定义为泛型接口
(2)Stream代表的是数据流
(3)Stream不是一个数据结构,不直接存储结构
(4)Stream通过管道操作数据
(5)创建一个stream接口实现类的对象(stream stream = person.stream();)
(6)管道代表一个操作序列


2. java中双冒号::的功能
JDK8中有双冒号的用法,就是把方法当做参数传到stream内部,使stream的每个元素都传入到该方法里面执行一下。


2,filter(过滤器)

  • 统计student中名字包含"小"字或"白"字的并计算他们的平均年龄

@Test
    public void test3() {
        List<Student> students = AddStudent.add();
        double average = students.stream()
                .filter(student -> student.getName().indexOf("小") >= 0 || student.getName().indexOf("白") >= 0)
                .mapToDouble(Student::getAge)
                .average()
                .getAsDouble();
        System.out.println(average);

    }

  • 把一个list转化为另一个list集合
//    遍历原始的集合,并把这个集合转化为另一个集合。
    @Test
    public void conver(){
        Student student = new Student("王宇",22, Sex.MAN);
//        利用stream.of把此流转化为list集合
        List<Student> studentList = Stream
                .of(student)
                .collect(Collectors.toList());
//        把上一个list集合打成了另一个list集合,遍历并输出
        studentList
                .stream()
                .map(Student::getAge)
                .collect(Collectors.toList())
                .forEach(s -> System.out.println(s));
    }

一看就懂的lambda表达式源码


觉得为时已晚,恰恰是最早的时候。

猜你喜欢

转载自blog.csdn.net/qq_41346335/article/details/88299738