Java中lambda表达式的基本运用

目录
  • 一、实现接口
  • 二、数字排序
  • 三、字符串排序方法
  • 四、对象排序
  • 总结

一、实现接口

调用一个接口中的方法,传统方法:
接口类A:

package lombda;

/**
 * @author yeqv
 * @program A2
 * @Classname A
 * @Date 2022/1/25 20:38
 * @Email w16638771062@163.com
 */
public interface A {
    int po(int i);

}

实现接口:

package lombda;

/**
 * @author yeqv
 * @program A2
 * @Classname B
 * @Date 2022/1/25 20:43
 * @Email w16638771062@163.com
 */
public class B implements A {
    public int po(int i) {
        return i * i;
    }
}

调用接口中的方法po()

package lombda;

/**
 * @author yeqv
 * @program A2
 * @Classname LB1
 * @Date 2022/1/25 20:35
 * @Email w16638771062@163.com
 */
public class LB1 {
    public static void main(String[] args) {
        A ab = new B();
        System.out.println(ab.po(5));
    }

}

运用lambda表达式后的代码可以直接调用接口A中的方法,不用再创建个类实现接口。

package lombda;

/**
 * @author yeqv
 * @program A2
 * @Classname LB1
 * @Date 2022/1/25 20:35
 * @Email w16638771062@163.com
 */
public class LB1 {
    public static void main(String[] args) {
        var ab = (A) x -> x * x;
        System.out.println(ab.po(5));
    }

}

二、数字排序

package lombda;

import java.util.Arrays;
import java.util.Random;

/**
 * @author yeqv
 * @program A2
 * @Classname LB1
 * @Date 2022/1/25 20:35
 * @Email w16638771062@163.com
 */
public class LB1 {
    public static void main(String[] args) {
        //定义数组
        Integer[] integers = new Integer[]{1, 23, 6, 8, 2, 3};
        System.out.println(Arrays.toString(integers));
        //正序排序
        Arrays.sort(integers);
        System.out.println(Arrays.toString(integers));
        //逆序排序
        Arrays.sort(integers, (a, b) -> b - a);
        System.out.println(Arrays.toString(integers));
        //乱序排序
        Random random = new Random();
        Arrays.sort(integers, (a, b) -> random.nextBoolean() ? 1 : -1);
        System.out.println(Arrays.toString(integers));

    }

}

三、字符串排序方法

package lombda;

import java.util.Arrays;
import java.util.Random;

/**
 * @author yeqv
 * @program A2
 * @Classname LB1
 * @Date 2022/1/25 20:35
 * @Email w16638771062@163.com
 */
public class LB1 {
    public static void main(String[] args) {
    /*    //定义数组
        Integer[] integers = new Integer[]{1, 23, 6, 8, 2, 3};
        System.out.println(Arrays.toString(integers));
        //正序排序
        Arrays.sort(integers);
        System.out.println(Arrays.toString(integers));
        //逆序排序
        Arrays.sort(integers, (a, b) -> b - a);
        System.out.println(Arrays.toString(integers));
        //乱序排序
        Random random = new Random();
        Arrays.sort(integers, (a, b) -> random.nextBoolean() ? 1 : -1);
        System.out.println(Arrays.toString(integers));*/
//定义字符串数组
        String[] strings = new String[]{"asd", "rtyuj", "vgj", "bdf"};
        System.out.println(Arrays.toString(strings));
        //正序
        Arrays.sort(strings, (a, b) -> a.compareTo(b));
        System.out.println(Arrays.toString(strings));
        //逆序
        Arrays.sort(strings, (a, b) -> b.compareTo(a));
        System.out.println(Arrays.toString(strings));
        //乱序
        Random random = new Random();
        Arrays.sort(strings, (a, b) -> random.nextBoolean() ? 1 : -1);
        System.out.println(Arrays.toString(strings));
    }

}

四、对象排序

先建立个User类

package lombda;

import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;

/**
 * @author yeqv
 * @program A2
 * @Classname User
 * @Date 2022/1/25 21:26
 * @Email w16638771062@163.com
 */
@Data
@AllArgsConstructor
@NoArgsConstructor
public class User {
    private int id;
    private String name;

}

再进行排序

package lombda;

import java.util.ArrayList;
import java.util.List;

/**
 * @author yeqv
 * @program A2
 * @Classname LB2
 * @Date 2022/1/25 21:27
 * @Email w16638771062@163.com
 */
public class LB2 {
    public static void main(String[] args) {
        //定义一个集合
        List<User> list = new ArrayList<User>(List.of(new User(1, "张三"), new User(5, "张四"), new User(2, "张五"), new User(3, "张六")));
        //以user对象的id来排序
        list.sort((a, b) -> a.getId() - b.getId());
        System.out.println(list);

    }
}

总结

到此这篇关于Java中lambda表达式的基本运用的文章就介绍到这了,更多相关Java lambda表达式内容请搜索我们以前的文章或继续浏览下面的相关文章希望大家以后多多支持我们!

(0)

相关推荐

  • 关于Java 中的 Lambda 表达式

    这篇文章我们将讨论关于Java 中的 Lambda 表达式,Lambda 表达式是 Java 涉足函数式编程的过程.它接受参数并将其应用于表达式或代码块.以下是语法的基本示例: (parameter1, parameter2) => expression 或者 (parameter1, parameter2) => {code block} Lambda 表达式非常有限,如果它不是 void,则必须立即返回一个值.他们不能使用诸如 if 或 for 之类的关键字来保持简单性.如果需要更多行代码

  • 详解Java8如何使用Lambda表达式进行比较

    目录 支持Lambda的基本排序 无类型定义的基本排序 使用引用静态方法进行排序 Sort Extracted Comparators 反向排序 使用多个条件进行排序 使用多个条件排序-组合 使用Stream.sorted()对列表进行排序 使用Stream.sorted()对列表进行反向排序 Null值 结论 在Java 8之前,对集合进行排序需要为排序中使用的比较器 Comparator 创建一个匿名内部类: new Comparator<Human>() { @Override publ

  • java Lambda表达式的使用心得

    目录 Lambda表达式的心得 Lambda表达式法 传统方法 使用Lambda表达式 你首先要知道的 Lambda表达式的技巧 Lambda表达式只能用来简化仅包含一个public方法的接口的创建 双冒号表达形式 Lambda表达式的心得 如题,因为博主也是最近才接触到Lambda表达式的(PS 在这里汗颜一会).我并不会讲解它的原理,诚然任何一件事物如果理解原理的话,使用它必将更加容易.但博主在学习的时候,大多数时候都是学会怎么用,然后在细究原理.就像你骑自行车之前,难道首先还要研究自行车的

  • Java中Lambda表达式用法介绍

    Lambda lambda是一个匿名函数,我们可以把lambda表达式理解为是一段可以传递的代码. lambda简明的地将代码或方法作为参数传递进去执行. "函数式编程"其核心是把函数作为值. 函数式接口 :只有一个 抽象方法的接口 称之为 函数式接口.函数式接口可以使用@FunctionalInterface进行注解. lambda表达式拆分为两部分 左侧:lambda 表达式的参数列表 右侧:lambda 表达式中所需要执行的功能,即lambda体 语法格式一:无参数,无返回值 @

  • 深入浅出理解Java Lambda表达式之四大核心函数式的用法与范例

    目录 1.四大核心函数式接口 1.1 Consumer<T> : 消费型接口 1.2 Supplier<T> : 供给型接口 1.3 Function<T, R> : 函数型接口 1.4 Predicate<T> : 断言型接口 2.方法引用 2.1 对象 :: 实例方法 2.2 类 :: 静态方法 2.3 类 :: 实例方法 3.构造器引用 4.数组引用 1.四大核心函数式接口 上一篇文章中说到了Lambda表达式中的基本语法,以及我们如何自定义函数式接口

  • java中lambda表达式简单用例

    我对java中lambda表达式的看法是相当纠结的: 一个我这么想:lambda表达式降低了java程序的阅读体验.java程序一直不以表现力出众,正相反使Java流行的一个因素正是它的安全和保守--即使是初学者只要注意些也能写出健壮且容易维护的代码来.lambda表达式对开发人员的要求相对来说高了一层,因此也增加了一些维护难度. 另一个我这么想:作为一个码代码的,有必要学习并接受语言的新特性.如果只是因为它的阅读体验差就放弃它在表现力方面的长处,那么即使是三目表达式也有人觉得理解起来困难呢.语

  • Java中Lambda表达式之Lambda语法与作用域解析

    接上一篇:初探Lambda表达式/Java多核编程[2]并行与组合行为 本节是第二章开篇,前一章已经浅显地将所有新概念点到,书中剩下的部分将对这些概念做一个基础知识的补充与深入探讨实践. 本章将介绍Lambda表达式基础知识. 前言 把上一张书中的结语放到这里作为本章学习内容的开头,以此来概括Lambda表达式的优点: 提升性能.自动的并行化 更棒的API(comparing(...)细粒度的方法将成为标准) 编码风格得到改进.代码简化 反观前面几篇文章中的代码实践,以上三个优点全部得到了验证.

  • Java中Lambda表达式并行与组合行为

    从串行到并行 串行指一个步骤一个步骤地处理,也就是通常情况下,代码一行一行地执行. 如果将我们常用的迭代器式的循环展开的话,就是串行执行了循环体内所定义的操作: sum += arr.get(0); sum += arr.get(1); sum += arr.get(2); //... 在书的一开始,就提到Java需要支持集合的并行计算(而Lambda为这个需求提供了可能). 这些功能将全部被实现于库代码中,对于我们使用者,实现并行的复杂性被大大降低(最低程度上只需要调用相关方法). 另外,关于

  • java中lambda表达式的分析与具体用法

    Lamda表达式 λ 希腊字母表中排序第十一位字母,英语名称为Lambda 避免匿名内部类定义过多 其实质属于函数式 编程的概念 (params)->expression[表达式] (params)->statement[语句] (params)->{statements} (a-> System.out.print("i like lambda–>"+a)); new Thread (()->System.out.println("多线程

  • 浅谈Java中Lambda表达式的相关操作

    为什么要使用Lambda? 可以对一个接口进行非常简洁的实现. Lambda对接口的要求? 接口中定义的抽象方法有且只有一个才可以. 传统实现一个接口需要这样做: 方法一: // 实现接口,同时必须重写接口中抽象方法 class Test implements IntrfacefN { @Override public void getUser(int a, int b) { } } // @FunctionalInterface 注解意思:函数式接口,用来做规范,有这个注解,说明此接口有且只有

  • Java中Lambda表达式基础及使用

    目录 一.举例说明 1.无参无返回 1.1 定义一个接口 1.2接口实现类 1.3 测试类 2.有参无返回代码示例 3.有参有返回 二.简单事项 1.省略模式 2.注意事项 三.Lambda表达式和匿名内部类的区别 1.所需类型不同: 2.使用限制不同: 3.实现原理不同: 标准格式: 三要素:形式参数 箭头 代码块 格式:(形式参数)->{代码块} 形式参数:如果多个参数用逗号隔开,无参留空 ->:英文中划线和大于号组成 代码块:具体要做的事 使用前提: 有一个接口 接口中有且仅有一个抽象方

  • Java中Lambda表达式的使用详解

    目录 理解函数式接口以及 Lambda表达式的发展过程 Lambda表达式及语法 一起来看看具体的使用 你需要注意什么 Lambda的实际运用 1.对集合排序 2.遍历集合 3.遍历集合(带条件) 4.代替 Runnable,开启一个线程 理解函数式接口以及 Lambda表达式的发展过程 任何接口,只包含唯一一个抽象方法,就是函数式接口 /** * lambdab表达式的发展 */ public class TestLambda1 { //3.静态内部类 static class Like2 i

  • Java中lambda表达式的基本运用

    目录 一.实现接口 二.数字排序 三.字符串排序方法 四.对象排序 总结 一.实现接口 调用一个接口中的方法,传统方法:接口类A: package lombda; /** * @author yeqv * @program A2 * @Classname A * @Date 2022/1/25 20:38 * @Email w16638771062@163.com */ public interface A { int po(int i); } 实现接口: package lombda; /**

  • Java中lambda表达式实现aop切面功能

    目录 lambda表达式实现切面功能 定义一个函数式接口 创建两个实现类 客户端 缺点 背景:最近项目中涉及到自定义线程池中子线程获取父线程的traceId,这个数据的传递过程可以用lamdba表达式进行封装实现的.这让我想到spring容器的三级缓存.其中的一个缓存singletonFactories就是存放的lambda表达式的. // 缓存的声明 private final Map<String, ObjectFactory<?>> singletonFactories =

随机推荐