首页 > 其他分享 >lambda表达式之jvm提供的接口

lambda表达式之jvm提供的接口

时间:2024-10-18 21:36:16浏览次数:8  
标签:java staff 接口 util jvm Staff public 表达式 lambda

一、java内置函数式接口:断言式接口

import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
import java.util.function.Predicate;

/*
    java内置函数式接口:断言式接口
    只有函数式接口【有且仅有一个抽象方法】才可以被@FunctionalInterface注解所修饰

    @FunctionalInterface
    public interface Predicate<T> {
        boolean test(T t);
    }

 */
public class StaffDemo {
    private static final List<Staff> list = Arrays.asList(
            new Staff("sj1001", "李刚", 18, 35000),
            new Staff("sj1002", "钱志强", 13, 20000),
            new Staff("sj1003", "江川", 24, 50000),
            new Staff("sj1004", "祝帅", 16, 21000),
            new Staff("sj1005", "吴问强", 8, 8000)
    );

    public static void main(String[] args) {
        // 需求1:过滤出薪资大于30000的员工
        List<Staff> staffs1 = filterWithCondition(list, s -> s.getSalary() > 30000);
        for (Staff staff : staffs1) {
            System.out.println(staff);
        }

        System.out.println("--------------------------------");
        // 需求2:过滤出年龄小于18的员工
        //使用lambda表达式改写
        List<Staff> staffs2 = filterWithCondition(list, s -> s.getAge() < 18);

        for (Staff staff : staffs2) {
            System.out.println(staff);
        }


    }


    public static List<Staff> filterWithCondition(List<Staff> list, Predicate<Staff> predicate) {
        ArrayList<Staff> list2 = new ArrayList<>();
        for (Staff staff : list) {
            if (predicate.test(staff)) {
                list2.add(staff);
            }
        }
        return list2;
    }
}

二、java内置函数式接口:函数型接口

import java.util.function.Function;

/*
    java内置函数式接口:函数型接口
    只有函数式接口【有且仅有一个抽象方法】才可以被@FunctionalInterface注解所修饰
    @FunctionalInterface
    public interface Function<T, R> {
        R apply(T t);
    }
 */
public class StaffDemo {
    public static void main(String[] args) {
        Staff s = new Staff("sj1001", "李刚", 18, 35000);
        show1(s, s1 -> s1.getName() + ":真帅!");
    }

    public static void show1(Staff staff, Function<Staff, String> function) {
        String s = function.apply(staff);
        System.out.println(s);
    }
}

三、java内置函数式接口:供给型接口

import java.util.ArrayList;
import java.util.List;
import java.util.Random;
import java.util.function.Supplier;

/*
    java内置函数式接口:供给型接口
    只有函数式接口【有且仅有一个抽象方法】才可以被@FunctionalInterface注解所修饰
    @FunctionalInterface
    public interface Supplier<T> {
        T get();
    }

 */
public class Demo {
    public static void main(String[] args) {
        //随机生成10个1-100的数据到集合返回
        List<Integer> list = getList(() -> new Random().nextInt(100) + 1);
        for (Integer i : list) {
            System.out.println(i);
        }

    }

    public static List<Integer> getList(Supplier<Integer> supplier){
        ArrayList<Integer> list = new ArrayList<>();
        for(int i=1;i<11;i++){
            list.add(supplier.get());
        }
        return list;
    }


}

四、java内置函数式接口:消费型接口


import java.util.function.Consumer;

/*
    java内置函数式接口:消费型接口
    只有函数式接口【有且仅有一个抽象方法】才可以被@FunctionalInterface注解所修饰
    @FunctionalInterface
    public interface Consumer<T> {
        void accept(T t);
    }
 */
public class Demo {
    public static void main(String[] args) {
        Staff s = new Staff("sj1001", "李刚", 18, 35000);
        fun1(s, liGang -> System.out.println("员工编号:" + liGang.getId() + ", 姓名:" + liGang.getName() + ", 年龄:" + liGang.getAge() + ", 薪资:" + liGang.getSalary()));
    }

    public static void fun1(Staff staff, Consumer<Staff> consumer) {
        consumer.accept(staff);
    }
}

标签:java,staff,接口,util,jvm,Staff,public,表达式,lambda
From: https://www.cnblogs.com/ndmtzwdx/p/18475083

相关文章

  • lambda表达式的写法2
    一、类名::静态方法名publicclassStaff{privateStringid;privateStringname;privateintage;privateintsalary;publicStaff(){}publicStaff(Stringid,Stringname,intage,intsalary){this.id=id;t......
  • 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表达式的使用场景必须有相应的函数接口,即内部有且仅有一个抽象方法的接口。......
  • 一次彻底掌握数据中心级的JVM调优实战经验
    出现内存溢出的场景通常发生在应用程序中存在内存泄漏、对象生命周期过长、对象频繁创建但未能及时回收等问题。以下是几个真实的业务场景,结合内存溢出问题,并从多个角度提出优化方法,来提高内存使用效率。场景1:大量业务数据缓存导致堆内存溢出场景描述:一个企业级Web应用使用......
  • 模板信息渲染和正则表达式的运用
    业务后台配置模板消息配置变量名及相关数据,用来进行查询配置模板信息,嵌入变量名前台渲染通过接口获取模板信息将模板消息中的变量替换成对应的数据模板信息:'今天到场一共${aaa}人,其中男${bbb}人,女${ccc}人'相关信息:{describe:'今天到场一共${aaa}人,其中男${bbb......
  • 专题(十九)Linux 下的正则表达式
    一、作用与介绍正则表达式通常用于判断语句中,用来检查某一字符串是否满足某一格式正则表达式是由普通字符与元字符组成普通字符:包括大小写字母、数字、标点符号及一些其它符号元字符:是指在正则表达式中具有特殊意义的专用字符,可以用来规定其前导字符(即位于元字符前面的字符)......
  • 讲解LeetCode第150题:逆波兰表达式求值(完整代码)
    LeetCode第150题:逆波兰表达式求值题目介绍方法一:栈完整代码展示核心原理演示代码片段解释片段一:片段二:片段三:片段四:片段五:方法二:数组模拟栈完整代码展示核心原理演示代码片段解释片段一:片段二:片段三:......
  • 正则表达式
    正则表达式正则表达式是一种匹配输入文本的模式。.Net框架提供了允许这种匹配的正则表达式引擎。模式由一个或多个字符、运算符和结构组成。作用:查询,从字符串中获取我们想要的部分匹配,判定字符串是否符合规则如判断用户输入的密码是否正确,邮箱格式是否合法等。字符转义......
  • Java之Lambda表达式详解
    一、Lambda表达式的概念与特点Lambda表达式是Java8引入的一个重要特性,它提供了一种简洁、优雅的方式来处理集合、过滤、映射等操作。Lambda表达式可以看做是匿名函数,它允许开发者以更简洁的方式声明匿名函数。Lambda表达式的基本语法由箭头指示符“->”表示,它将参数与函数......