首页 > 其他分享 >Lambda表达式

Lambda表达式

时间:2022-12-27 19:33:31浏览次数:43  
标签:System println new Lambda public 表达式 out

Lambda表达式

Lambda概述

  • Lambda表达式时JDK8开始后的一种新语法格式
  • 作用:简化匿名内部类的代码写法

Lambda表达式的简化格式

image

注意:Lambda表达式只能简化函数式接口的匿名内部类的写法形式

什么是函数式接口?

  • 首先必须是接口、其次接口中有且仅有一个抽象方法的形式
  • 通常我们会在接口上加上一个 @FunctionalInterface 注解,标记该接口必须是满足函数式接口

image

/**
 * 目标:学会使用Lambda的标志格式简化匿名内部类的代码形式
 * Lambda只能简化接口中只有一个抽象方法的匿名内部类形式
 */
public class LambdaDemo2 {
    public static void main(String[] args) {

//        Swimming s1 = new Swimming() {
//            @Override
//            public void swim() {
//                System.out.println("老师游泳贼六");
//            }
//        };

        Swimming s1 = () -> {
            System.out.println("老师游泳贼六");
        };
        go(s1);
        System.out.println("--------------------");

        go(new Swimming() {
            @Override
            public void swim() {
                System.out.println("学生游泳很开心");
            }
        });

        go(()->{
            System.out.println("学生游泳很开心");
        });

    }

    public static void go(Swimming s){
        System.out.println("开始...");
        s.swim();
        System.out.println("结束...");
    }
}

@FunctionalInterface //一旦加上这个注解必须是函数式接口,里面只能有一个抽象方法
interface Swimming{
    void swim();
}

image

Lambda实战-简化常见函数式接口

Lambda表达式简化Comparator接口的匿名形式

image

Lambda表达式简化按钮监听器ActionListener的匿名内部类形式

image

public class LambdaDemo3 {
    public static void main(String[] args) {
        Integer[] ages1 = {34, 12, 42, 23};
        /**
         * 参数一:被排序的数组,必须是引用类型的元素
         * 参数二:匿名内部类对象,代表了一个比较器对象
         */
        Arrays.sort(ages1, new Comparator<Integer>() {
            @Override
            public int compare(Integer o1, Integer o2) {
                return o2 - o1; //降序
            }
        });

        Arrays.sort(ages1,(Integer o1, Integer o2)-> {
                return o2 - o1; //降序
            });

        System.out.println(Arrays.toString(ages1));

        System.out.println("---------------------");
        JFrame win = new JFrame("登录");
        JPanel panel = new JPanel();
        win.add(panel);
        win.setSize(400,300);
        win.setVisible(true);

        JButton btn = new JButton("按钮");
        JButton btn2 = new JButton("点我!");
        btn.addActionListener(new ActionListener() {
            @Override
            public void actionPerformed(ActionEvent e) {
                System.out.println("点我,点我,有人点我!");
            }
        });

        btn2.addActionListener(e -> System.out.println("点我,点我,有人点我!"));

        panel.add(btn);
        panel.add(btn2);
    }
}

Lambda表达式的省略规则

image

标签:System,println,new,Lambda,public,表达式,out
From: https://www.cnblogs.com/zzx944964684/p/17008818.html

相关文章

  • C++11 新特性之Lambda函数(匿名函数)
    声明:本文参考了AlexAllain的文章​​http://www.cprogramming.com/c++11/c++11-lambda-closures.html​​加入了自己的理解,不是简单的翻译C++11终于知道要在语言中加入......
  • 爬虫学习笔记 -- 正则表达式
    0x01match1、从头开始匹配,只能匹配一次importrestr="1a2b3c456d7e890f"res=re.match('\d+',str)print(res.group())运行结果:12、通用匹配符.*?importrestr="11a2b3c456d7e......
  • 基于SqlSugar的开发框架循序渐进介绍(24)-- 使用Serialize.Linq对Lambda表达式进行序列
    在上篇随笔《基于SqlSugar的开发框架循序渐进介绍(23)--Winform端管理系统中平滑增加对WebAPI对接的需求 》中介绍了基于一个接口,实现对两种不同接入方式(直接访问数据库实......
  • javascript使用正则表达式替换或者捕获子字符串
    letstring='mutiFile[{"name":"新建文件夹(2).zip","ext":".zip","size":1675876,"path":"/static/upload/2022December/ba145698fcc99fd414f0f4ec6ea418e5.zip"}]';......
  • Lambda表达式
    函数式思想尽量忽略面向对象的复杂语法,强调做什么,而不是以什么形式去做。Lambda表达式就是函数是思想的体现案例1这是一段多线程要执行的内容:publicclassMyRu......
  • 【编程基础】正则表达式基本使用及在Python中使用正则表达式匹配内容
    前言当接触一个新知识点或者技术时,只要问完哲学中的三大问题,基本就对这个知识点或者技术有大致的了解,这也是我学习一个新技术常用的方法,那到底是哪三大问题呢?是什么?怎么做,为......
  • C++ sort函数中利用lambda进行自定义排序规则
    在c++中,由于sort()函数默认提供的是由小到大的排序方式,因此有时候我们需要自定义排序规则来实现由大到小的排序。一维vector<>排序#include<bits/stdc++.h>usingnam......
  • linux 中sed -r选项 支持扩展正则表达式
     001、[liujiaxin01@PC1test]$lsa.txt[liujiaxin01@PC1test]$cata.txt##测试数据##xxxyy##dddss##kkkqqq##mmnn1......
  • 栈实现表达式求值
    使用键盘输入数学表达式(含数字,四种运算符+、-、、/和小括号,其中运算数都是一位数(0~9)),将数学表达式转化成后缀表达式输出,利用后缀表达式求表达式的值并输出。输入格式:输......
  • EL表达式
    EL表达式El表达式是什么?ExpressionLanguage(表达式语言)EL表达式归属于JSP为什么要有EL表达式?EL表达式可以代替JSP中的java代码,让jsp文件中的程序更加整洁美观......