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 表达式的核心结构是 “参数列表 -> 代码体”,其中参数列表和箭头运算符(->)是 Lambda 的语法基础,各自承担关键作用:

    # 1. Lambda 参数列表的作用

    • 核心作用:接收外部传入的参数,为代码体提供运算数据;
    • 语法规则:
      • 无参数:用空括号表示(() -> System.out.println("无参数"));
      • 单个参数:可省略括号(num -> num * 2),也可保留括号((num) -> num * 2);
      • 多个参数:必须用括号包裹,参数之间用逗号分隔((a, b) -> a + b);
      • 类型声明:参数类型可省略(编译器自动推导),也可显式声明((int a, String b) -> a + b.length());
    • 注意事项:参数列表的数量、类型必须与目标函数式接口的抽象方法一致(如Predicate<Integer>的test方法接收 1 个 Integer 参数,Lambda 参数列表需匹配)。

    # 2. 箭头运算符(->)的作用

    • 核心作用:分隔参数列表和代码体,表明 “参数传入后执行的逻辑”;
    • 语法规则:箭头运算符左侧是参数列表,右侧是代码体(单个表达式或代码块);
    • 代码体规则:
      • 单个表达式:可省略大括号和return,表达式结果自动作为返回值((a, b) -> a - b);
      • 多个语句:必须用大括号包裹,若有返回值需显式写return((a, b) -> { int sum = a + b; return sum; });
    • 本质意义:将参数列表与代码体关联,实现 “函数作为参数传递” 的核心逻辑(如list.sort((a,b) -> a.compareTo(b)),箭头运算符将排序逻辑与sort方法关联)。

    # 示例

    // 1. 无参数 + 单个语句
    Runnable run = () -> System.out.println("Lambda无参数执行");
    run.run();
    
    // 2. 单个参数(省略括号) + 单个表达式
    Consumer<Integer> print = num -> System.out.println("数字:" + num);
    print.accept(10);
    
    // 3. 多个参数 + 代码块(带return)
    Comparator<String> comparator = (s1, s2) -> {
        if (s1.length() == s2.length()) {
            return s1.compareTo(s2);
        }
        return s1.length() - s2.length();
    };
    List<String> list = Arrays.asList("apple", "banana");
    Collections.sort(list, comparator);
    
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17

    #


    上次更新: 12/30/2025
    HashMap、LinkedHashMap、Hashtable、ConcurrentHashMap 的区别?
    sleep () 和 wait () 的区别?

    ← HashMap、LinkedHashMap、Hashtable、ConcurrentHashMap 的区别? sleep () 和 wait () 的区别?→

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