Lambda实践

Lambda实践

1.引言

​ 在java1.8之后,开始支持使用Lambda表达式,及函数式编程。极大地简化了代码。特别是在对List进行处理的时候,十分简洁和清爽。

2.常用的流

因为经常使用List进行操作,所以下面的示例也都已List作为demo

1.collect(Collectors.toList()):将流转换成一个List

2.filter():过滤List中符合条件的数据

3.map():将List进行一些转换

4.flap():将多个Stream合并成一个流

5.max()/min():获取集合中最大/最小值的对象

6.count():对集合执行统计

7.reduce():从一组值中生成一个值

8.averagingInt():获取平均值

下面贴代码,开始实践
1.新建一个学生类(推荐使用lombok,自动构建getter,setter,toString等方法)

@Data
@AllArgsConstructor
public class Student {

    private String name;
    private Integer age;
    private Integer height;
}

2.测试类

public class LambdaTest {
    public static void main(String[] args) {
        // collect(Collectors.toList())
        List<Student> students = Stream.of(new Student("鲁班七号", 18, 150), new Student("狄仁杰", 19, 170)
                , new Student("虞姬", 20, 175)).collect(Collectors.toList());
        System.out.println(students);

        // filter
        List<Student> filterList = students.stream().filter(student -> student.getAge() < 20).collect(Collectors.toList());
        System.out.println("年龄小于20岁的集合:" + filterList);

        // map
        List<String> nameList = students.stream().map(student -> student.getName()).collect(Collectors.toList());
        System.out.println("姓名集合为:" + nameList);

        // flatMap
        List<Student> students2 = Stream.of(new Student("孙尚香", 22, 165), new Student("后羿", 23, 180)).collect(Collectors.toList());
        List<Student> flatStudents = Stream.of(students, students2).flatMap(students1 -> students1.stream()).collect(Collectors.toList());
        System.out.println("两个student集合为:" + flatStudents);

        //max min
        Optional<Student> max = students.stream().max(Comparator.comparing(student -> student.getAge()));
        Optional<Student> min = students.stream().min(Comparator.comparing(student -> student.getAge()));
        if (max.isPresent()) {
            // 最大的值不为空
            System.out.println("max Age Student:" + max);
        }
        if (min.isPresent()) {
            System.out.println("min Age student:" + min);
        }

        // count    一般结合filter使用
        long count = students.stream().filter(student -> student.getAge()< 18).count();
        System.out.println("count:" + count);

        // reduce 可以从一组值中生成一个值
        Integer reduce = Stream.of(1, 2, 3, 4, 5).reduce(0, (a, b) -> a + b);
        System.out.println("reduce: " + reduce);

        // 获取students中的平均年龄
        Double avgAge = students.stream().collect(averagingInt(Student::getAge));
        System.out.println("avgAge:" + avgAge);


    }
}

3.看看打印结果
在这里插入图片描述

注:建议自己上手实践一遍,同时在工作中使用这个进行编程,熟能生巧,加油!

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值