Java为了程序员方便使用Lambda表达式,Java内置了四个核心函数式接口

简介: jdk1.8新特性值之lambda表达式的使用。系统的介绍了java中为函数式编程提供的四个核心接口。

Java为了程序员方便使用Lambda表达式,Java内置了四个核心函数式接口

package com.scc.lambda;

import java.util.ArrayList;
import java.util.List;
import java.util.Random;
import java.util.function.Consumer;
import java.util.function.Function;
import java.util.function.Predicate;
import java.util.function.Supplier;

/**
 *  对这四种核心函数式接口的使用
 *  用lambda表达式的时候,有些参数的变量是可以自己随意定义的,但是类型会根据它的实现接口的类型继承下来
 *  例如:Myfunction(String str,Function<String, String> fun) 这个方法
 *  R apply(T t);   这个是function的抽象类  
 *  在实现类中 Myfunction("   hello Alice    ", f->f.trim());
 *  这个f就是随意定义的
 * @author scc
 */
public class Demo4 {
    public static void main(String[] args) {
        System.out.println("---------消费型接口的使用  Consumer--------------");
        happy(20000.0, m->System.out.println("聚餐消费了:"+m+"元"));
        
        System.out.println("--------供给型接口  Supplier--------------");
        List<Integer> randomList = getRandom(9, ()->new Random().nextInt(101));
        System.out.println(randomList);
        
        System.out.println("--------函数型接口   --------------");
        String f1 = Myfunction("   hello Alice    ", f->f.trim());
        System.out.println("去掉字符串两头的空格:"+f1);
        String f2 = Myfunction("HELLO ALICE", f->f.toLowerCase());
        System.out.println("把大写字母转换成小写字母:"+f2);
        
        System.out.println("-------断言型接口   --------------");
        List<String> list=new ArrayList<>();
        list.add("张三");
        list.add("李四");
        list.add("王五");
        list.add("张三丰");
        list.add("张会");
        list.add("赵六");
        //找到所有姓张的人 在实现类重写的方法中  定义判断逻辑
        List<String> mydemo = mydemo(list, s->s.startsWith("张"));
        System.out.println(mydemo);
    }
    
    //消费型接口的使用  Consumer   聚餐例子
    public static void happy(Double money,Consumer<Double> com) {
        com.accept(money);
    }
    //供给型接口  Supplier    产生给定个数的随机数  0-100之间
    public static List<Integer> getRandom(int count,Supplier<Integer> sup) {
        List<Integer> list=new ArrayList<>();
        for(int i=0;i<count;i++) {
            list.add(sup.get());
        }
        return list;
    }
    //函数型接口   
    public static String Myfunction(String str,Function<String, String> fun) {
        return fun.apply(str);
    }
    //断言型接口   
    public static List<String> mydemo(List<String> list,Predicate<String> pre){
        List<String> mylist=new ArrayList<>();
        for (String s : list) {
            if(pre.test(s)) {
                mylist.add(s);
            }
        }
        return mylist;
    }
    
}
相关文章
|
2月前
|
Java 编译器 API
Java Lambda表达式与函数式编程入门
Lambda表达式是Java 8引入的重要特性,简化了函数式编程的实现方式。它通过简洁的语法替代传统的匿名内部类,使代码更清晰、易读。本文深入讲解Lambda表达式的基本语法、函数式接口、方法引用等核心概念,并结合集合操作、线程处理、事件回调等实战案例,帮助开发者掌握现代Java编程技巧。同时,还解析了面试中高频出现的相关问题,助你深入理解其原理与应用场景。
|
2月前
|
安全 Java API
Java中的Lambda表达式:简洁与功能的结合
Java中的Lambda表达式:简洁与功能的结合
365 211
|
8天前
|
JSON 网络协议 安全
【Java】(10)进程与线程的关系、Tread类;讲解基本线程安全、网络编程内容;JSON序列化与反序列化
几乎所有的操作系统都支持进程的概念,进程是处于运行过程中的程序,并且具有一定的独立功能,进程是系统进行资源分配和调度的一个独立单位一般而言,进程包含如下三个特征。独立性动态性并发性。
54 1
|
8天前
|
JSON 网络协议 安全
【Java基础】(1)进程与线程的关系、Tread类;讲解基本线程安全、网络编程内容;JSON序列化与反序列化
几乎所有的操作系统都支持进程的概念,进程是处于运行过程中的程序,并且具有一定的独立功能,进程是系统进行资源分配和调度的一个独立单位一般而言,进程包含如下三个特征。独立性动态性并发性。
44 1
|
1月前
|
数据采集 存储 弹性计算
高并发Java爬虫的瓶颈分析与动态线程优化方案
高并发Java爬虫的瓶颈分析与动态线程优化方案
Java 数据库 Spring
77 0
|
1月前
|
算法 Java
Java多线程编程:实现线程间数据共享机制
以上就是Java中几种主要处理多线程序列化资源以及协调各自独立运行但需相互配合以完成任务threads 的技术手段与策略。正确应用上述技术将大大增强你程序稳定性与效率同时也降低bug出现率因此深刻理解每项技术背后理论至关重要.
118 16
|
2月前
|
缓存 并行计算 安全
关于Java多线程详解
本文深入讲解Java多线程编程,涵盖基础概念、线程创建与管理、同步机制、并发工具类、线程池、线程安全集合、实战案例及常见问题解决方案,助你掌握高性能并发编程技巧,应对多线程开发中的挑战。

热门文章

最新文章

下一篇
oss教程