首页 > 其他分享 >lambda表达式的写法2

lambda表达式的写法2

时间:2024-10-18 21:34:06浏览次数:4  
标签:String int s1 new lambda 写法 public 表达式 Staff

一、类名::静态方法名

public class Staff {
    private String id;
    private String name;
    private int age;
    private int salary;

    public Staff() {
    }

    public Staff(String id, String name, int age, int salary) {
        this.id = id;
        this.name = name;
        this.age = age;
        this.salary = salary;
    }

    public String getId() {
        return id;
    }

    public void setId(String id) {
        this.id = id;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public int getAge() {
        return age;
    }

    public void setAge(int age) {
        this.age = age;
    }

    public int getSalary() {
        return salary;
    }

    public void setSalary(int salary) {
        this.salary = salary;
    }

    @Override
    public String toString() {
        return "Staff{" +
                "id='" + id + '\'' +
                ", name='" + name + '\'' +
                ", age=" + age +
                ", salary=" + salary +
                '}';
    }
}
import java.util.Arrays;
import java.util.List;

interface Inter{
    List<Staff> getStaff(Staff... staffs);
}

public class Demo1 {
    public static void main(String[] args) {
        Staff s1 = new Staff("sj1001", "李刚", 18, 35000);
        Staff s2 = new Staff("sj1002", "钱志强", 13, 20000);
        Staff s3 = new Staff("sj1003", "江川", 24, 50000);
        Staff s4 = new Staff("sj1004", "祝帅", 16, 21000);
        Staff s5 = new Staff("sj1005", "吴问强", 8, 8000);
//        List<Staff> staffList = fun1(staffs -> Arrays.asList(staffs), s1, s2, s3, s4, s5);
        /**
         *  假如 Lambda 表达式符合如下格式:
         *      ([变量1, 变量2, ...]) -> 类名.静态方法名([变量1, 变量2, ...])
         * 我们可以简写成如下格式:
         *      类名::静态方法名
         */
        List<Staff> staffList = fun1(Arrays::asList, s1, s2, s3, s4, s5);
        for (Staff staff : staffList) {
            System.out.println(staff);
        }

    }

    public static List<Staff> fun1(Inter inter, Staff... staffs){
        return inter.getStaff(staffs);
    }
}

二、对象引用::方法名

/**
 * 假如 Lambda 表达式符合如下格式:
 * ([变量1, 变量2, ...]) -> 对象引用.方法名([变量1, 变量2, ...])
 * 我们可以简写成如下格式:
 * 对象引用::方法名
 */
class Demo2 {
    public String show(String s1, String s2) {
        return s1 + "-数加-" + s2;
    }
}

interface Inter{
    String fun1(String a,String b);
}

public class Demo {
    public static void main(String[] args) {
        Demo2 demo2 = new Demo2();

//        show2("hello","ligang",(s1,s2)->demo2.show(s1,s2));
        show2("hello","ligang",demo2::show);
    }

    public static void show2(String s1,String s2,Inter inter){
        String s = inter.fun1(s1, s2);
        System.out.println(s);
    }
}

三、变量1对应的类名::实例方法

/**
 * 假如我们的 Lambda 表达式符合如下格式:
 *      (变量1[, 变量2, ...]) -> 变量1.实例方法([变量2, ...])
 * 那么我们的代码就可以简写成:
 *      变量1对应的类名::实例方法
 */
interface Inter {
    String fun1(String s1, int i, int j);
}

public class Demo {
    public static void main(String[] args) {
//        show1((s1, i, j) -> s1.substring(i, j));
        show1(String::substring);
    }

    public static void show1(Inter inter) {
        String s = inter.fun1("李刚是世界上最有男人味的男人", 8, 11);
        System.out.println(s);
    }
}

四、类名::new

interface Inter{
    Staff fun1(String s1,String s2,int i1,int i2);
}

public class Demo {
    public static void main(String[] args) {
//        show("sj1001","吴问强",18,100000, (s1,s2,i1,i2)->new Staff(s1,s2,i1,i2));
        /**
         *  假如我们的 Lambda 表达式符合如下格式:
         * ([变量1, 变量2, ...]) -> new 类名([变量1, 变量2, ...])
         * 我们就可以简写成如下格式:
         * 类名::new
         */
        show("sj1001","吴问强",18,100000, Staff::new);
    }

    public static void show(String s1,String s2,int i1,int i2,Inter inter){
        Staff staff = inter.fun1(s1, s2, i1, i2);
        System.out.println(staff);
    }
}

五、元素类型[] :: new

import java.util.Arrays;

interface Inter{
    int[] fun(int i);
}

public class Demo {
    public static void main(String[] args) {
//        show(7, i->new int[i]);

        /**
         *  假如我们的 Lambda 表达式符合如下格式:
         *      (变量) -> new 元素类型[变量]
         * 我们就可以简写成如下格式:
         *      元素类型[] :: new
         */
        show(7, int[]::new);
    }
    public static void show(int i,Inter inter){
        int[] ints = inter.fun(i);
        System.out.println(ints.length);
    }
}

标签:String,int,s1,new,lambda,写法,public,表达式,Staff
From: https://www.cnblogs.com/ndmtzwdx/p/18475090

相关文章

  • lambda表达式的写法1
    一、lambda表达式的含义Lambda表达式是Java8引入的一种简洁的语法,用于表示匿名函数或传递行为。它使得我们可以更简洁地表达代码中的行为和函数逻辑,特别是在使用函数式接口时(如Consumer、Supplier、Function<T,R>等)。Lambda表达式可以大大简化代码,尤其是当我们需要为接口......
  • js实现cron表达式翻译成中文
    js实现cron表达式翻译成中文参考项目https://github.com/ikesnowy/cron-chinese对他的代码进行改进:只能翻译分时日月周和这五个符号:*?-/,exportfunctionhumanizeCronInChinese(cron){consttokens=cron.trim().split('');constcronStruc......
  • 八,Lambda表达式
    JavaLambda表达式与枚举Lambda表达式概述Java从JDK1.8开始引入了Lambda表达式,以简化代码开发并支持函数式编程。Lambda表达式可以避免面向对象编程中的一些繁琐问题,但同时也是一把双刃剑。Lambda表达式的使用场景必须有相应的函数接口,即内部有且仅有一个抽象方法的接口。......
  • 模板信息渲染和正则表达式的运用
    业务后台配置模板消息配置变量名及相关数据,用来进行查询配置模板信息,嵌入变量名前台渲染通过接口获取模板信息将模板消息中的变量替换成对应的数据模板信息:'今天到场一共${aaa}人,其中男${bbb}人,女${ccc}人'相关信息:{describe:'今天到场一共${aaa}人,其中男${bbb......
  • 专题(十九)Linux 下的正则表达式
    一、作用与介绍正则表达式通常用于判断语句中,用来检查某一字符串是否满足某一格式正则表达式是由普通字符与元字符组成普通字符:包括大小写字母、数字、标点符号及一些其它符号元字符:是指在正则表达式中具有特殊意义的专用字符,可以用来规定其前导字符(即位于元字符前面的字符)......
  • 讲解LeetCode第150题:逆波兰表达式求值(完整代码)
    LeetCode第150题:逆波兰表达式求值题目介绍方法一:栈完整代码展示核心原理演示代码片段解释片段一:片段二:片段三:片段四:片段五:方法二:数组模拟栈完整代码展示核心原理演示代码片段解释片段一:片段二:片段三:......
  • 正则表达式
    正则表达式正则表达式是一种匹配输入文本的模式。.Net框架提供了允许这种匹配的正则表达式引擎。模式由一个或多个字符、运算符和结构组成。作用:查询,从字符串中获取我们想要的部分匹配,判定字符串是否符合规则如判断用户输入的密码是否正确,邮箱格式是否合法等。字符转义......
  • Java之Lambda表达式详解
    一、Lambda表达式的概念与特点Lambda表达式是Java8引入的一个重要特性,它提供了一种简洁、优雅的方式来处理集合、过滤、映射等操作。Lambda表达式可以看做是匿名函数,它允许开发者以更简洁的方式声明匿名函数。Lambda表达式的基本语法由箭头指示符“->”表示,它将参数与函数......
  • 运算符于表达式
    算数运算符+加法、-减法、*乘法、/除法、%取余。++自增,变量自身增加1。++在前,先算后用;++在后,先用后算。--自减,变量自身减少1。--在前,先算后用;--在后,先用后算。赋值运算符=赋值复合运算符:+=加等、-=减等、*=乘等、/=除等、%=取余等。关系运算符>大于,>=大于等于,==等于,!=不等......
  • 翻转链表常用写法
    翻转链表常用写法循环写法classSolution{public:ListNode*reverseList(ListNode*head){ListNode*prev=nullptr,*next=nullptr,*now=head;while(now){next=now->next;now->next=prev;prev=......