iis服务器助手广告广告
返回顶部
首页 > 资讯 > 精选 >Lambda表达式的说明和实例用法
  • 482
分享到

Lambda表达式的说明和实例用法

2023-06-02 15:06:56 482人浏览 独家记忆
摘要

本篇内容介绍了“Lambda表达式的说明和实例用法”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!Lambda表达式,一种简单的匿名内部类(但

本篇内容介绍了“Lambda表达式的说明和实例用法”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!

Lambda表达式,一种简单的匿名内部类(但是只能对应  只有一个抽象方法的接口-->函数式接口)

- 举例

  - 无参  基础运用

    ```java

    interface InterfaceA{

        public void show();

    }

    public class Demo1 {

        public static void main(String[] args) {

            //匿名内部类

            InterfaceA a = new InterfaceA() {

                public void show() {

                    System.out.println("匿名内部类的show");

                }

            };

            a.show();

            //通过lambda表达式

            InterfaceA b = ()->{

                System.out.println("lambda表达式的show");

            };

            b.show();

            //简化

            InterfaceA bb = ()->System.out.println("简化的lambda表达式的show");

            bb.show();

        }

    }

    ```

  - 带参数 基础运用

    ```java

    interface A{

        public int add(int i,int j);

    }

    class B{

        public int bAdd(int i,int j){

            return i+j;

        }

    }

    public class Lambda {

        public static void main(String[] args) {

            //lambda表达式需要返回值,而它的代码块中仅有一条省略了return的语句

            //lambda表达式会自动返回这条语句的结果

            //A a=(i,j)->{return i+j;};   

            A a=(i,j)->i+j; //基础用法,这就很类似匿名内部类了

            System.out.println(a.add(4,5));

        }

    }

    interface A{

        public int add(int i,int j);

    }

    class B{

        public int bAdd(int i,int j){

            return i+j;

        }

    }

    public class Lambda {

        public static void main(String[] args) {

            A a=new B().bAdd();//思想参考 C#  委托

            System.out.println(a.add(4,5));

        }

    }

    interface A{

        public int add(int i,int j);

    }

    class B{

        //静态

        public static int bAdd(int i,int j){

            return i+j;

        }

    }

    public class Lambda {

        public static void main(String[] args) {

            //调用方式不一样了

            A a=B::bAdd;//思想参考 C#  委托

            System.out.println(a.add(4,5));

        }

    }

    ```

  - 引用类方法

    ```java

    interface Converter{

        //将字符串转换成整数

        Integer convert(String value);

    }

    class Test1{

        public static void fun1() {

            //原来的方法

            Converter converter = value->Integer.valueOf(value);

            Integer v1 = converter.convert("222");

            System.out.println(v1);

            //简化

            //引用类方法

            //通过::实现,这里会自动将lambda表达式方法的参数全部传递给当前的方法

            Converter converter2 = Integer::valueOf;

            Integer v2 = converter2.convert("333");

            System.out.println(v2);

        }

    }

    ```

  - 引用特定对象的实例方法

    ```java

    interface IA{

        public void show(String message);

    }

    class A{

        public void play(String i) {

            System.out.println("这里是A的方法play"+"  i:"+i);

        }

    }

    class Test2{

        public static void fun2() {

            //原来

            IA ia = message->new A().play(message);

            ia.show("hello");

            //简化

            IA ia2 = new A()::play;

            ia2.show("world");

        }

    }

    ```

  - 引用构造方法

    ```java

    interface IC{

        Object show(String name,int age);

    }

    class Person{

        String name;

        int age;

        public Person(String name, int age) {

            super();

            this.name = name;

            this.age = age;

        }

        @Override

        public String toString() {

            return "Person [name=" + name + ", age=" + age + "]";

        }

    }

    class Test4{

        public static void fun4() {

            IC ic = (name,age)->new Person(name, age);

            Object per = ic.show("bing", 19);

            System.out.println(per);

            //简化

            //构造方法引用代替lambda表达式,函数式接口中被实现方法的全部参数传该构造方法作为参数

            IC ic2 = Person::new;

            Object per1 = ic2.show("chen", 10);

            System.out.println(per1);

        }

    }

    ```

- 应用

```java

String[] strings={"123","456","789","赵志阳真帅"};

List<String> lists= Arrays.asList(strings);

lists.forEach((s)-> out.println("字符串是:"+s));

lists.forEach(out::println);

```

## 集合

```java

package collection;

import java.util.ArrayList;

import java.util.Iterator;

import java.util.Objects;

class Person{

    private String name;

    private int age;

    public Person(String name, int age) {

        this.name = name;

        this.age = age;

    }

    @Override

    public boolean equals(Object o) {

        if (this == o) return true;

        if (o == null || getClass() != o.getClass()) return false;

        Person person = (Person) o;

        return age == person.age &&

                Objects.equals(name, person.name);

    }

    public void setName(String name) {

        this.name = name;

    }

    public void setAge(int age) {

        this.age = age;

    }

    @Override

    public String toString() {

        return "Person{" +

                "name='" + name + '\'' +

                ", age=" + age +

                '}';

    }

}

public class Main {

    public static void main(String[] args) {

        ArrayList<Person> arrayList=new ArrayList<>();

        Person zs=new Person("张三",20);

        Person zs2=new Person("张三",20);//将放不进去

        Person ls=new Person("李四",30);

        Person ww=new Person("王五",40);

        //contains判断比较的是对象的equals方法。

        if(!arrayList.contains(zs)){

            arrayList.add(zs);

        }

        if(!arrayList.contains(zs2)){

            arrayList.add(zs2);

        }

        if(!arrayList.contains(ls)){

            arrayList.add(ls);

        }

        if(!arrayList.contains(ww)){

            arrayList.add(ww);

        }

        Iterator iterator=arrayList.iterator();

        while(iterator.hasNext()){

            System.out.println(iterator.next());

        }

    }

}

```

用hash相关的容器是,重写equals hashcode

treeSet还要实现Comparable接口并重写compareTo方法。或者自定义比较器Comparator

```java

public class Demo9 {

    public static void main(String[] args) {

        //创建比较器对象

        ComStrWithLength comStrWithLength = new  ComStrWithLength();

        //将比较器对象交给TreeSet

        Set set = new TreeSet<>(comStrWithLength);

         

        set.add("java");

        set.add("hadoop");

        set.add("spark");

        set.add("hdfs");

        set.add("HDFS");

        set.add("mapReduce");

        System.out.println(set);

    }

}

//创建一个比较器类

class ComStrWithLength implements Comparator{

    @Override

    public int compare(Object o1, Object o2) {

        //比较字符串的长度

        if (!(o1 instanceof String)) {

            throw new ClassCastException("类型转换错误");

        }

        if (!(o2 instanceof String)) {

            throw new ClassCastException("类型转换错误");

        }

        //向下转型

        String s1 = (String)o1;

        String s2 = (String)o2;

        //先按照长度比

        int num = s1.length()-s2.length();

        //长度相同,再按照字典顺序比

        return num==0?s1.compareTo(s2):num;

    }

}

泛型

作用:

 使用了泛型不再需要进行容错处理,向下转型,强制类型转换----简化代码

 将运行阶段的问题提前到编译阶段检查,提高了代码的安全性和编程效率

“Lambda表达式的说明和实例用法”的内容就介绍到这里了,感谢大家的阅读。如果想了解更多行业相关的知识可以关注编程网网站,小编将为大家输出更多高质量的实用文章!

--结束END--

本文标题: Lambda表达式的说明和实例用法

本文链接: https://www.lsjlt.com/news/230515.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • Lambda表达式的说明和实例用法
    本篇内容介绍了“Lambda表达式的说明和实例用法”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!Lambda表达式,一种简单的匿名内部类(但...
    99+
    2023-06-02
  • Java中forEach使用lambda表达式,数组和集合的区别说明
    1.数组怎么使用lambda 数组不能直接在forEach中使用lambda表达式 PartnerType[] values = PartnerType.values(); //...
    99+
    2024-04-02
  • 【javaSE】 Lambda表达式与Lambda表达式的使用
    文章目录 🌳Lambda表达式的背景🚩Lambda表达式的语法🚩函数式接口 🎋Lambda表达式的基本使用🎄...
    99+
    2023-09-15
    开发语言 java Lambda表达式 源码
  • C++中Lambda表达式的语法与实例
    目录概述 语法分析 捕获列表 关键字声明 mutableexception示例 捕获列表按值传递捕获列表按引用传递总结概述 C++ 11 中的 Lambda 表达式用于定义并创建匿...
    99+
    2024-04-02
  • Java的Lambda表达式实例分析
    这篇“Java的Lambda表达式实例分析”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇“Java的Lambda表达式实例分析...
    99+
    2023-06-29
  • Java实例分析Lambda表达式
    这篇文章主要介绍“Java实例分析Lambda表达式”,在日常操作中,相信很多人在Java实例分析Lambda表达式问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”Java实例分析Lambda表达式”的疑惑有所...
    99+
    2023-06-30
  • Java的Lambda表达式使用实例分析
    这篇文章主要讲解了“Java的Lambda表达式使用实例分析”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“Java的Lambda表达式使用实例分析”吧!Lambada 简介lambda 表达...
    99+
    2023-07-05
  • C++实例详解lambda表达式的使用
    目录lambda表达式1、lambda表达式语法2、lambda应用3、lambda表达式的应用实践1、计算器案例2、智能指针案例3、优先级队列lambda表达式 C++11 函数对...
    99+
    2024-04-02
  • Python中的lambda和apply用法及说明
    目录1 lambda1.1 举最简单的例子1.2 再举一个普通的例子2 Apply2.1 举例2.2 下面的例子是DataFrame中apply的用法总结1 lambda lambd...
    99+
    2022-12-21
    Python中lambda用法 Python中apply用法 lambda和apply用法
  • C#中Lambda表达式的用法
    从C#3.0开始,可以使用lambda表达式把实现代码赋予委托。lambda表达式与委托(https://www.jb51.net/article/244051.htm)直接相关。当...
    99+
    2024-04-02
  • lambda表达式使用方法
    本篇内容介绍了“lambda表达式使用方法”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!package test;import java.u...
    99+
    2023-06-02
  • Python中的lambda表达式的用法
    本篇内容主要讲解“Python中的lambda表达式的用法”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“Python中的lambda表达式的用法”吧!问:说说Python中的lambda表达式?...
    99+
    2023-06-19
  • Java8 lambda表达式的10个实例讲解
    目录例1、用lambda表达式实现Runnable例2、使用Java 8 lambda表达式进行事件处理例3、使用lambda表达式对列表进行迭代例4、使用lambda表达式和函数式...
    99+
    2024-04-02
  • Linq lambda表达式的示例分析
    小编给大家分享一下Linq lambda表达式的示例分析,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!Linq lambda表达式了解过C# 3.0的新特性的话应...
    99+
    2023-06-17
  • C# LINQ查询表达式及对应LAMBDA表达式的用法
    目录首先先让我们看一下什么是LINQ查询表达式和Lambda表达式:什么是“延迟执行”?还是上面例子中的查询:并行linqC#编程语言非常优美,我个人还是非常赞同的。特别是在学习一段...
    99+
    2024-04-02
  • java lambda表达式的用法是什么
    Lambda表达式是Java 8中引入的一种新的语法特性,用于简化函数式编程的代码编写。Lambda表达式可以替代匿名内部类的使用,...
    99+
    2023-09-26
    java lambda
  • Mysql中正则表达式Regexp常见用法及说明
    目录Mysql中Regexp常见用法Regexp关键字及正则表达式的常用通配符总结Mysql中Regexp常见用法 模糊匹配,包含特定字符串 # 查找content字段中包含“车友俱...
    99+
    2022-12-12
    Mysql正则表达式 Regexp常见用法 Mysql Regexp用法
  • Java中Lambda表达式用法介绍
    Lambda lambda是一个匿名函数,我们可以把lambda表达式理解为是一段可以传递的代码。 lambda简明的地将代码或方法作为参数传递进去执行。 “函数式...
    99+
    2024-04-02
  • C++ lambda 表达式命名的原则和实践
    c++++ lambda 表达式命名原则为:描述性、唯一性、简短和一致性。具体实践如下:描述性:名称应清晰描述 lambda 表达式的用途。唯一性:不同语义的 lambda 表达式应具有...
    99+
    2024-05-01
    c++
  • QueryWrapper的lambda表达式使用OR
    com.baomidou.mybatisplus.core.conditions.query.QueryWrapper是MybatisPlus框架构造查询条件常用的对象 使用lambda表达式写法更为清晰,简洁: QueryWrap...
    99+
    2023-08-31
    java mybatis Powered by 金山文档
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作