博客
关于我
Lambda表达式使用整理总结
阅读量:571 次
发布时间:2019-03-11

本文共 1612 字,大约阅读时间需要 5 分钟。

Lambda 表达式的基础语法及其实践应用

Lambda 表达式的简称 lambda expression 是 Java 8 中引入的一种新的编程特性,由一个特殊的运算符 "><" 或 "→" 表示。这种表达式将函数的定义变得更加简洁和灵活,为开发者提供了更高效的功能实现方式。

Lambda 表达式的基础语法

Lambda 表达式的核心结构分为两个部分:

  • 参数列表:定义函数的输入参数,参数之间用逗号分隔。
  • Lambda 体:规定函数的执行逻辑,可以是单一表达式或块状代码。
  • Lambda 表达式的两种表达形式:

    • 当 Lambda 体是单一表达式时:
      (parameters) → expression
    • 当 Lambda 体包含多个语句时:
      (parameters) → {     statement;     ...}

    Lambda 表达式的典型应用场景

  • 集合处理:优化顺序遍历

    使用 Lambda 表达式简化集合的 forEach 遍历操作:

    String[] names = {"喵", "汪", "咩"};List
    nameList = Arrays.asList(names);nameList.forEach(name → { System.out.print(name + "; ");});
  • Stream 强化版:数据过滤与映射

    List
    users = users.stream() .filter(user → user.getName().equals("小喵咪")) .collect(Collectors.toList());
    List
    nums = Arrays.asList(100, 200, 300, 400, 500);nums.stream() .map(num → num + 12) .forEach(System.out::println);
  • 集合排序:自然排序替代

    Arrays.sort(names, String::compareTo);
  • 数据聚合:结果集的交替处理

    String str = userList.stream()    .filter(user → "喵".equals(user.getName()))    .collect(Collectors.joining(","));
    Set
    names = userList.stream() .filter(user → "喵".equals(user.getName())) .collect(Collectors.toSet());
    TreeSet
    names = userList.stream() .filter(user → "喵".equals(user.getName())) .collect(Collectors.toCollection(TreeSet::new));
  • 并发编程:多线程实现

    Runnable race = () → System.out.println("Hello world!");new Thread(race).start();
  • Lambda 表达式的核心优势

  • 简洁性:减少繁琐的包装层,直接表达业务逻辑。
  • 灵活性和简洁性:支持只需传递方法或接收器的场景(如方法引用)。
  • 可读性:通过明确的箭头符号,代码结构一目了然。
  • Lambda 表达式的注意事项

  • 局部变量声明要求:对于 Lambda 使用的局部变量(捕获变量),无需显式声明为 final,但必须确保其不被后续代码修改(即可读性)。
  • 名称冲突问题:Lambda 参数名称不得与声明在其作用域内的局部变量同名。
  • 转载地址:http://efhvz.baihongyu.com/

    你可能感兴趣的文章
    Flex 布局的自适应子项内容过长导致其被撑大问题
    查看>>
    PL/SQL 动态Sql拼接where条件
    查看>>
    Lua-table 一种更少访问的安全取值方式
    查看>>
    虚函数
    查看>>
    菱形继承
    查看>>
    Error:Cannot read packageName from AndroidManifest.xml
    查看>>
    RTL设计- 多时钟域按顺序复位释放
    查看>>
    斐波那契数列两种算法的时间复杂度
    查看>>
    int main(int argc,char* argv[])详解
    查看>>
    【Android踩过的坑】7.Android Studio 点击启动项目时进入调试模式
    查看>>
    【Android小技巧】1.快速查看SDK对应的API Level
    查看>>
    【自学Flutter】4.1 Material Design字体图标的使用(icon)
    查看>>
    C++清空队列(queue)方法
    查看>>
    【换行符】什么时候用cin.get()吃掉输入流中的换行符
    查看>>
    【二叉树】已知后序与中序求先序
    查看>>
    数组范围的动态扩容
    查看>>
    如何选择三种验证类型的https证书
    查看>>
    thinkphp使用163/126邮箱发送
    查看>>
    解决Nginx 404 not found问题
    查看>>
    计算机网络之第三章笔记--数据链路层
    查看>>