必须掌握的十个Lambda表达式简化代码提高生产力

目录
  • 前言
  • 1. 使用Lambda表达式进行集合遍历
  • 2. 使用Lambda表达式进行排序
  • 3. 使用Lambda表达式进行过滤
  • 4. 使用Lambda表达式进行映射
  • 5. 使用Lambda表达式进行归约
  • 6. 使用Lambda表达式进行分组
  • 7. 使用Lambda表达式进行函数式接口的实现
  • 8. 使用Lambda表达式进行线程的创建
  • 9. 使用Lambda表达式进行Optional的操作
  • 10. 使用Lambda表达式进行Stream的流水线操作
  • 结尾

前言

  Lambda表达式是一种在现代编程语言中越来越常见的特性,可以简化代码、提高生产力。这篇文章将介绍10个必须掌握的Lambda表达式,这些表达式涵盖了在实际编程中经常用到的常见场景,例如列表操作、函数组合、条件筛选等。通过学习这些Lambda表达式,你将更加深入地理解函数式编程的思想,能够更加高效地编写代码。

1. 使用Lambda表达式进行集合遍历

未使用Lambda表达式:

List<String> list = Arrays.asList("apple", "banana", "orange");
for (String fruit : list) {
    System.out.println(fruit);
}

使用Lambda表达式:

List<String> list = Arrays.asList("apple", "banana", "orange");
list.forEach(fruit -> System.out.println(fruit));

2. 使用Lambda表达式进行排序

未使用Lambda表达式:

List<String> list = Arrays.asList("apple", "banana", "orange");
Collections.sort(list, new Comparator<String>() {
    public int compare(String s1, String s2) {
        return s1.compareTo(s2);
    }
});

使用Lambda表达式:

List<String> list = Arrays.asList("apple", "banana", "orange");
Collections.sort(list, (s1, s2) -> s1.compareTo(s2));

3. 使用Lambda表达式进行过滤

未使用Lambda表达式:

List<String> list = Arrays.asList("apple", "banana", "orange");
List<String> filteredList = new ArrayList<String>();
for (String fruit : list) {
    if (fruit.startsWith("a")) {
        filteredList.add(fruit);
    }
}

使用Lambda表达式:

List<String> list = Arrays.asList("apple", "banana", "orange");
List<String> filteredList = list.stream().filter(fruit -> fruit.startsWith("a")).collect(Collectors.toList());

4. 使用Lambda表达式进行映射

未使用Lambda表达式:

List<String> list = Arrays.asList("apple", "banana", "orange");
List<Integer> lengths = new ArrayList<Integer>();
for (String fruit : list) {
    lengths.add(fruit.length());
}

使用Lambda表达式:

List<String> list = Arrays.asList("apple", "banana", "orange");
List<Integer> lengths = list.stream().map(fruit -> fruit.length())
.collect(Collectors.toList());

5. 使用Lambda表达式进行归约

未使用Lambda表达式:

List<Integer> list = Arrays.asList(1, 2, 3, 4, 5);
int sum = 0;
for (int i : list) {
    sum += i;
}

使用Lambda表达式:

List<Integer> list = Arrays.asList(1, 2, 3, 4, 5);
int sum = list.stream().reduce(0, (a, b) -> a + b);

6. 使用Lambda表达式进行分组

未使用Lambda表达式:

List<String> list = Arrays.asList("apple", "banana", "orange");
Map<Integer, List<String>> grouped = new HashMap<Integer, List<String>>();
for (String fruit : list) {
    int length = fruit.length();
    if (!grouped.containsKey(length)) {
        grouped.put(length, new ArrayList<String>());
    }
    grouped.get(length).add(fruit);
}

使用Lambda表达式:

List<String> list = Arrays.asList("apple", "banana", "orange");
Map<Integer, List<String>> grouped = list.stream().collect(Collectors.groupingBy(fruit -> fruit.length()));

7. 使用Lambda表达式进行函数式接口的实现

未使用Lambda表达式:

public interface MyInterface {
    public void doSomething(String input);
}
MyInterface myObject = new MyInterface() {
    public void doSomething(String input) {
        System.out.println(input);
    }
};
myObject.doSomething("Hello World");

使用Lambda表达式:

MyInterface myObject = input -> System.out.println(input);
myObject.doSomething("Hello World");

8. 使用Lambda表达式进行线程的创建

未使用Lambda表达式:

Thread thread = new Thread(new Runnable() {
    public void run() {
        System.out.println("Thread is running.");
    }
});
thread.start();

使用Lambda表达式:

Thread thread = new Thread(() -> System.out.println("Thread is running."));
thread.start();

9. 使用Lambda表达式进行Optional的操作

未使用Lambda表达式:

String str = "Hello World";
if (str != null) {
    System.out.println(str.toUpperCase());
}

使用Lambda表达式:

Optional<String> str = Optional.ofNullable("Hello World");
str.map(String::toUpperCase).ifPresent(System.out::println);

10. 使用Lambda表达式进行Stream的流水线操作

未使用Lambda表达式:

List<String> list = Arrays.asList("apple", "banana", "orange");
List<String> filteredList = new ArrayList<String>();
for (String fruit : list) {
    if (fruit.startsWith("a")) {
        filteredList.add(fruit.toUpperCase());
    }
}
Collections.sort(filteredList);

使用Lambda表达式:

List<String> list = Arrays.asList("apple", "banana", "orange");
List<String> filteredList = list.stream().filter(fruit -> fruit.startsWith("a")).map(String::toUpperCase).sorted().collect(Collectors.toList());

结尾

以上就是必须掌握的十个Lambda表达式简化代码提高生产力的详细内容,更多关于Lambda表达式的资料请关注我们其它相关文章!

(0)

相关推荐

  • Kotlin Lambda表达式实践使用介绍

    目录 集合的创建和遍历方式 集合的函数式API 集合的创建和遍历方式 集合只要包含List和Set在宽泛一些就包括Map这种键值对类型的数据结构 List,Set和Map在java当中都是接口,其中List的主要实现类是ArrayList和LinkedList,Set的主要用的实现类是HashSet,Map主要用的实现类是HashMap 现在我们要创建一个水果集合来放水果,在Kotlin当中可以这样写 val list = ArrayList<String>() list.add("

  • Java分析Lambda表达式Stream流合并分组内对象数据合并

    目录 前言 需求 代码实现 依赖引入 设计实体类 测试代码 前言 之前写过<Lambda使用——JDK8新特性>,现在有一个分组合并的需求正好拿来小试牛刀. 需求 数据出自许多接口数据,需要将几个接口数据根据省份id进行分组合并.举例说明: A接口返回List里面有值的的字段为:provinceId.field1.field2.field3 B接口返回List里面有值的的字段为:provinceId.field4.field5.field6 C接口返回List里面有值的的字段为:provinc

  • 简单聊聊工作中常用的Java Lambda表达式

    目录 前言 1. list转map 2. filter()过滤 3. foreach遍历 4. groupingBy分组 5. sorted+Comparator 排序 6.distinct去重 7. findFirst 返回第一个 8. anyMatch是否至少匹配一个元素 9. allMatch 匹配所有元素 10. map转换 11. Reduce 12. peek 打印个日志 13. Max,Min最大最小 14. count统计 15. 常用函数式接口 前言 日常开发中,我们很多时候需

  • Java8如何使用Lambda表达式简化代码详解

    系统环境: Java JDK 版本:1.8 参考地址: Java 8 Lambda 表达式 Jdk 8 新特性 04 方法引用与构造器引用 Java 8 新特性:Lambda 表达式之方法引用 一.Lambda 表达式简介 1.什么是 Lambda 表达式 Lambda 表达式是在 JDK 8 中引入的一个新特性,可用于取代大部分的匿名内部类.使用 Lambda 表达式可以完成用少量的代码实现复杂的功能,极大的简化代码代码量和代码结构.同时,JDK 中也增加了大量的内置函数式接口供我们使用,使得

  • Java使用lambda表达式简化代码的示例详解

    目录 目的 推理一下 实现接口,使用方法 内部类实现接口,使用方法 局部内部类实现接口,使用方法 匿名内部类实现接口,使用方法 使用lamda表达式的,实现方法 可带参数 只有一个参数 有返回值 只有一条语句 究极省略,不能再省了 lamda总结 代码,自然写的越简洁越好啦,写的人舒服,看的人也舒服,一切为了高效. 要把有限的时间花到其它有意思的事情上去. 目的 学习简化代码的思路,使用jdk8新特性lamada表达式. 推理一下 某接口,只有一个方法. 比如这个: package java.l

  • Java中Lambda表达式的使用详细教程

    目录 简介 格式 实例 lambda作为参数 遍历集合 创建线程 排序 简介 说明 本文用示例展示Lambda表达式的用法.同时也会介绍Lambda的相关知识. Lambda表达式介绍 Lambda表达式的本质只是一个"语法糖",由编译器推断并帮你转换包装为常规的代码,因此你可以使用更少的代码来实现同样的功能. Lambda表达式是Java SE 8中一个重要的新特性. Lambda与匿名内部类 Lamda表达式指的是应用在SAM(SingleAbstractMethod,含有一个抽象

  • C/C++中利用空指针简化代码,提高效率

    这里的写法,可以避免使用 for 循环,减少栈空间内存的使用和减少运行时的计算开销!#include iostream>   #include string>    using namespace std; void print_char(char* array[]);//函数原形声明 void main(void)      {          char* test[]={"abc","cde","fgh",NULL};//这里添

  • Java编程中使用lambda表达式的奇技淫巧

    为什么使用Lambda表达式 先看几个例子: 第一个例子,在一个独立的线程中执行某项任务,我们通常这么实现: class Worker implements Runnable { public void run() { for (int i = 0; i < 100; i++) doWork(); } ... } Worker w = new Worker(); new Thread(w).start(); 第二个例子,自定义字符串比较的方法(通过字符串长度),一般这么做: class Leng

  • Java Lambda表达式入门示例

    本文实例讲述了Java Lambda表达式.分享给大家供大家参考,具体如下: 一 点睛 Lambda表达式支持将代码块作为方法参数,Lambda表达式允许使用更简洁的代码来创建只有一个抽象方法的接口(函数式接口)的实例. Lambda表达式主要作用就是代替匿名内部类的繁琐语法. 它由三部分组成: 形参列表.形参列表允许省略形参类型.如果形参列表中只有一个参数,甚至连形参列表的圆括号也可以省略. 箭头(->),必须通过英文等号和大于符号组成. 代码块.如果代码块只有包含一条语句,Lambda表达式

  • Java8中Lambda表达式的理解与应用

    目录 简介 正文 1. lambda的语法 2. 为啥引入lambda 3. 什么是函数式接口 4. 什么是行为参数化 5. 手写一个函数式接口 6. 常用的函数式接口 7. 什么是方法引用 8. 什么是构造引用 9. lambda表达式中引入外部变量的限制 10. lambda的组合操作 总结 简介 Lambda表达式是一个可传递的代码块,可以在以后执行一次或多次: 下面贴个对比代码: // Java8之前:旧的写法 Runnable runnable = new Runnable() { @

  • java8中的lambda表达式简介

    目录 Lambda表达式的语法 Lambda表达式作用域 方法引用 指向静态方法的方法引用 指向任意类型实例方法的方法引用 指向现有对象的实例方法的方法引用 构造方法引用 lambda与匿名内部类 匿名内部类 总结 Lambda表达式类似匿名函数,简单地说,它是没有声明的方法,也即没有访问修饰符.返回值声明和方法名. Lambda允许把函数作为一个方法的参数(函数作为参数传递进方法中). Lambda表达式的语法 (parameters) -> expression 或 (parameters)

  • C# Lambda表达式用途深入理解

    假如我们想要从一个整型数组中取出其中是奇数的选项,其实现方式有很多,我们通过下面三种实现方式来对对比理解Lambda表达式的用途 方法一:命名方法 复制代码 代码如下: public class Common { public delegate bool IntFilter(int i); public static List<int> FilterArrayOfInt(int[] ints, IntFilter filter) { var lstOddInt = new List<in

  • Android Studio中引入Lambda表达式的方法

    本文介绍的是在Android Studio中引入Lambda表达式的方法,下面话不多说,来看看详细的介绍. 方法如下: 依次点击 [File][Other Settings][Default Project Structure]确保当前项目使用的JDK版本是1.8. 打开项目(Project)的build.gradle,在dependencies节点添加 classpath 'me.tatarka:gradle-retrolambda:3.2.0' 打开项目(Module)的build.grad

  • 实例讲解C++编程中lambda表达式的使用

    函数对象与Lambdas 你编写代码时,尤其是使用 STL 算法时,可能会使用函数指针和函数对象来解决问题和执行计算.函数指针和函数对象各有利弊.例如,函数指针具有最低的语法开销,但不保持范围内的状态,函数对象可保持状态,但需要类定义的语法开销. lambda 结合了函数指针和函数对象的优点并避免其缺点.lambda 与函数对象相似的是灵活并且可以保持状态,但不同的是其简洁的语法不需要显式类定义. 使用lambda,相比等效的函数对象代码,您可以写出不太复杂并且不容易出错的代码. 下面的示例比较

  • Java Lambda表达式与匿名内部类的联系和区别实例分析

    本文实例讲述了Java Lambda表达式与匿名内部类的联系和区别.分享给大家供大家参考,具体如下: 一 点睛 Lambda表达式与匿名内部类存在如下相同点: Lambda表达式与匿名内部类一样,都可以直接访问"effectively final"的局部变量,以及外部类的成员变量(包括实例变量和类变量). Lambda表达式创建的对象与匿名内部类生成的对象一样, 都可以直接调用从接口继承得到的默认方法. Lambda表达式与匿名内部类主要存在如下区别: 匿名内部类可以为任意接口创建实例

随机推荐