Bohr-L Bohr-L
首页
技术
常见面试题
收藏
  • 分类
  • 标签
  • 归档
GitHub (opens new window)

刘博

I'm a slow walker, But I never walk backwards.
首页
技术
常见面试题
收藏
  • 分类
  • 标签
  • 归档
GitHub (opens new window)
  • 数据处理与存储类

  • Spring 生态类

  • 缓存问题类

  • 多线程类

  • JVM 类

  • MySQL 类

  • Java 8 + 特性类

    • 使用 Java 8 的优点是什么?
    • 集合与流有何不同?
    • 什么是 Lambda 表达式?
      • 解释 Predicate 和 Consumer 函数式接口
      • peek () 方法在 Java 8 中的作用?
      • 什么是函数式接口?
      • 接口中的静态方法有什么作用?
      • skip (long) 和 limit (long) 的区别?
      • 抽象类和接口的异同?
      • overload 与 override 的区别?
      • HashMap 在 Java 8 中的变化?
      • HashMap、LinkedHashMap、Hashtable、ConcurrentHashMap 的区别?
      • Lambda 参数列表与箭头运算符的作用?
      • sleep () 和 wait () 的区别?
      • throw 与 throws 的区别?
      • final、finally、finalize 的区别?
      • Collection 与 Collections 的区别
      • ArrayList、LinkedList、Vector 的区别?
    • 其他技术类

    • 常见面试题
    • Java 8 + 特性类
    刘博
    2025-12-29
    目录

    什么是 Lambda 表达式?

    Lambda 表达式是 Java 8 引入的 “匿名函数”,核心作用是 “简化代码,支持函数式编程”,本质是可传递的代码块(能作为参数传递给方法)。

    # 1. 语法格式

    (参数列表) -> { 代码体 }
    
    1
    • 简化规则:
      • 若参数列表只有一个参数,可省略括号(如num -> num * 2);
      • 若代码体只有一行,可省略大括号和return(如(a,b) -> a + b,无需return);
      • 若参数类型可推导,可省略类型声明(如(a,b) -> a - b,无需写(int a, int b))。

    # 2. 核心特性

    • 无名称:匿名函数,无需定义方法名;
    • 可传递:可作为参数传入支持函数式接口的方法(如Collections.sort(list, (a,b) -> a.compareTo(b)));
    • 捕获变量:可访问外部有效 final 变量(或实际不变的变量),但不能修改(如int x=10; list.forEach(num -> System.out.println(num+x)))。

    # 3. 适用场景

    • 替代匿名内部类(如集合排序、线程创建);
    • 结合 Stream API 进行数据处理(如filter、map操作);
    • 简化回调函数(如事件监听、异步任务)。

    # 示例

    // 1. 集合排序(替代Comparator匿名内部类)
    List<String> list = Arrays.asList("apple", "banana", "cherry");
    Collections.sort(list, (s1, s2) -> s1.length() - s2.length()); // 按长度排序
    
    // 2. 线程创建(替代Runnable匿名内部类)
    new Thread(() -> System.out.println("Lambda线程执行")).start();
    
    // 3. Stream处理
    List<Integer> nums = Arrays.asList(1,2,3,4);
    nums.stream().filter(n -> n % 2 == 0).forEach(n -> System.out.println(n));
    
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10

    上次更新: 12/30/2025
    集合与流有何不同?
    解释 Predicate 和 Consumer 函数式接口

    ← 集合与流有何不同? 解释 Predicate 和 Consumer 函数式接口→

    最近更新
    01
    CPU 使用率较高排查和解决
    12-29
    02
    JVM OOM 问题如何排查和解决
    12-29
    03
    接口防刷怎么实现?
    12-29
    更多文章>
    Theme by Vdoing | Copyright © 2025-2026 Bohr-L's note
    • 跟随系统
    • 浅色模式
    • 深色模式
    • 阅读模式