`
Ivan_Pig
  • 浏览: 388204 次
  • 性别: Icon_minigender_1
  • 来自: 南京
社区版块
存档分类
最新评论

[FAQ]为什么引入lambda表达式

阅读更多

Lambda表达式(闭包)在很多现代化的编程语言中很常见。在Java平台上引入lambda表达式的一个最主要原因是方便多线程的处理集合。目前,对于listset等集合类典型的操作方式是使用迭代器。如果需要并行的处理集合,需要编写客户端代码来处理,而不是集合本身处理。


Java8中,引入闭包的目的就是为了给集合提供函数式的方法,方便处理。这样所带来的好处是,集合能够自己组织他们的元素,而不需要客户端代码来处理。但是,为了使得客户端代码能够使用这一改进,必须给集合添加函数式方法。当前通用的做法是使用匿名类。但是声明匿名类带来了过多的标准化代码。


举例来说,forEach方法接受一个Consumer接口的实例并为每个元素调用它的accept方法:

interface Consumer<T> { void accept(T t); }


假设我们要使用forEach调换java.awt.Point的集合的每个元素的xy的坐标。使用Consumer的匿名内部类,我们需要编写类似如下的代码

pointList.forEach(new Consumer() {
public void accept(Point p) {
p.move(p.y, p.x);

});


而如果使用lambda表达式,我们只需要这样:

pointList.forEach(p -> p.move(p.y, p.x));

0
0
分享到:
评论

相关推荐

    Kotlin 中文文档.pdf

    类和继承 属性和字段 接口 可见性修饰词 扩展 数据对象 泛型 嵌套类 枚举类 对象表达式和声明 代理模式 代理属性 函数和lambda表达式 函数 高阶函数和lambda表达式 内联函数 其它 多重申明 Ranges 类型检查和自动...

    Kotlin 语言参考文档 中文版

    高阶函数与 Lambda 表达式 内联函数(Inline Function) 其他 解构声明(Destructuring Declaration) 集合(Collection) 值范围(Range) 类型检查与类型转换 this 表达式 相等判断 操作符重载(Operator overloading) Null...

    c++11FAQ中文版

    - Lambda表达式:简化了创建匿名函数对象的过程。 - 用户定义字面量:允许程序员创建自己的字面量(例如,为复数类型创建的字面量)。 - 右值引用和移动语义:提高了复制操作的效率。 - 模板别名:为模板类型...

    kotlin_in_chinese

    Kotlin与Java相比,引入了大量现代语言特性,如类型安全、空安全和lambda表达式等。Kotlin的语法简洁,使得编码更加清晰,并且在编译时能提供更好的类型检查。Kotlin完全兼容Java,使得开发者可以平滑迁移到Kotlin,...

    Kotlin 语言文档

    高阶函数和 lambda 表达式 78 内联函数 82 协程 85 其他 89 解构声明 89 集合:List、Set、Map 91 区间 92 2类型的检查与转换“is”与“as” 94 This 表达式 96 相等性 97 操作符重载 98 空安全 102 异常 104 注解 ...

    C++11FAQ中文版pdf(带完整书签141页)

    6. **Lambda表达式**:Lambda表达式允许开发者直接在代码中定义匿名函数对象,从而简化回调函数和事件处理器的编写。 7. **可变参数模板(Variadic Templates)**:C++11允许模板接受任意数量和类型的参数,这为...

    java_FAQ.rar_Something About You

    13. **Lambda表达式**:Java 8引入的Lambda表达式简化了函数式编程,使代码更加简洁、易读。 14. **Stream API**:Stream API为处理集合提供了新的方式,支持链式操作,适合进行大量数据的过滤、映射和归约操作。 ...

    C++ 0x FAQ 翻译版

    总结来说,C++0x(C++11)是一个里程碑式的更新,极大地提升了C++的现代编程体验,引入的特性如自动类型推断、右值引用、lambda表达式等,至今仍然是C++程序员日常开发中的重要工具。学习和理解这些新特性对于任何想...

    c++faq ,讨论了关于c++的一些基本问题。英文。

    14. **C++11及后续版本的新特性**:C++11、C++14、C++17等新标准引入了许多改进和新特性,如Lambda表达式、右值引用、auto类型推导、范围for循环等。 通过阅读和理解C++FAQ,开发者不仅可以解决实际编程中的问题,...

    c++-faq-lite

    12. **C++11及后续版本的新特性**:C++11引入了lambda表达式、右值引用、类型推断(auto关键字)、move语义、强类型枚举等,后续的C++14和C++17继续扩展了这些特性,提升了C++的现代性和效率。 《C++ FAQ Lite》...

    the boost c++ library.pdf

    - **动机**:为什么需要 Boost.Lambda。 - **lambda 表达式简介**:介绍了 lambda 表达式的概念及其在 C++ 中的应用。 4. **使用指南** - **入门示例**:展示了一些简单的使用示例。 - **参数和返回类型**:...

    kotlin-in-chinese.pdf

    * lambda 表达式:Kotlin 语言提供了 lambda 表达式机制,用于定义匿名函数。 * 高阶函数:Kotlin 语言提供了高阶函数机制,用于将函数作为参数传递或返回函数。 协程 * 协程定义:Kotlin 语言提供了协程定义机制...

    C and C++ FAQ Frequently Asked Questions 整理

    C++还引入了C++11、C++14、C++17、C++20等新标准,带来了更多的语言改进和库支持,如lambda表达式、右值引用、并发编程支持、类型推断(auto)等。 在阅读"C and C++ FAQ.CHM"时,开发者可以找到关于这些主题的详细...

    C++ FAQ

    10. **C++11及后续标准**:自C++11以来,C++标准不断更新,引入了新特性如lambda表达式、右值引用、自动类型推断(auto关键字)、统一初始化等,使C++更加现代和易用。 阅读《C++ FAQ》,开发者将能够逐步掌握这些...

    cpp 2011标准

    12. 新标准与旧实践的关系:C++11同时引入了一些新的技术和特性,如lambda表达式、智能指针、移动语义等,既是对旧有编程实践的补充,也对C++的学习和使用带来了新的挑战。 13. 教程和资源:为了帮助开发者学习和...

    kotlin-docs

    **函数与 Lambda 表达式** 部分深入讨论了 Kotlin 中函数的定义和使用,以及高阶函数和 Lambda 表达式的应用,这对于理解和利用函数式编程风格至关重要。内联函数则是一种优化技术,可以减少运行时的开销。 **其他...

    C++0x_FAQ.pdf

    1. **Lambda表达式**:提供了一种简洁的方式定义简单的匿名函数,大大简化了函数式编程风格代码的编写。 2. **Range-based for循环**:提供了一种更直观的方式来遍历容器中的元素,提高了代码的可读性。 3. **...

    kotlin语言 中文版

    - Lambda表达式:Kotlin对Lambda表达式有很好的支持,使得函数式编程更加便捷。 - 类型推断:Kotlin具有强大的类型推断能力,减少冗余的类型声明。 - 标准库:Kotlin拥有一个广泛的标准库,涵盖了字符串处理、集合...

Global site tag (gtag.js) - Google Analytics