Lambda表达式及Stream流式处理



什么是Lambda表达式

  • JDK8开始支持Lambda表达式,用来让程序编写更优雅
  • 利用Lambda可以更简洁的实现匿名内部类与函数声明与调用
  • 基于Lambda提供stream流式处理极大简化对集合的操作

实例讲解Lambda语法

image-20220527153450445
(参数列表) -> 实现语句
  1. Lambda 标准使用方式
Object obj = (Integer a, Integer b) -> {
    return a+b+0f;
}
System.out.println(obj.operate(1, 2));
  1. Lambda允许忽略参数类型
Object obj = (a, b) -> {
    return a+b+0f;
}
System.out.println(obj.operate(3, 4));
  1. 单行实现代码可以省略大括号和return
Object obj = (a, b) -> a * b + 0f;
System.out.println(obj.operate(3, 5));

约束条件

  • Lambda 表达式只能实现有且只有一个抽象方法的接口,Java称为“函数式接口”。

基于Lambda实现函数式编程

  1. 函数式编程理念是将代码作为可重用数据代入到程序运行中
  2. 函数式编程强调"你想做什么",而不是"你想怎么做"
  3. JDK8后提供了一系列新的函数式接口,位于java.util.function

Predicate

  • Predicate是新增的函数式接口,位于java.util.function
  • Predicate用于测试传入数据是否满足判断要求
  • Predicate接口需要实现test()方法进行逻辑判断
image-20220530130526198
image-20220530140032241

Stream流式处理

  • Stream流式处理是建立在Lambda基础上的多数据处理技术
  • Stream对集合数据处理进行高度抽象,极大简化代码量
  • Stream可对集合进行迭代,去重,筛选,排序,聚合等一系列处理
image-20220530141743032
  1. 基于数组创建
public void generator1() {
    String[] arr = {"Lily", "Andy", "Jackson", "Smith"};
    Stream<String> stream = Stream.of(arr);
    stream.forEach(s -> System.out.println(s));
}
  1. 基于集合创建
public void generator2() {
    List<String> list = new ArrayList<>();
    list.add("Lily");
    list.add("Andy");
    list.add("Jackson");
    list.add("Smith");
    Stream<String> stream = list.stream();
    stream.forEach(s -> System.out.println(s));
}
  1. 利用generator创建无线长度流
public void generator3() {
    Stream<Integer> stream = Stream.generate(() -> new Random().nextInt(10000));
    stream.limit(10).forEach(i -> System.out.println(i));
}
  1. 基于迭代器创建流
public void generator4() {
    Stream<Integer> stream = Stream.iterate(1, n -> n + 1);
    stream.limit(100).forEach(s -> System.out.println(s));
}
  1. 基于字符串系列创建流
public void generator5() {
    String str = "abcdefg哈喽";
    IntStream stream =str.chars();
    stream.forEach(c -> System.out.println((char)c));
}
Lambda表达式及Stream流式处理-HuaのJava之旅
Lambda表达式及Stream流式处理
此内容为免费资源,请登录后查看
0
免费资源
© 版权声明
THE END
喜欢就支持一下吧
点赞8 分享
评论 抢沙发
头像
欢迎您留下宝贵的见解!
提交
头像

昵称

取消
昵称表情代码图片