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;
    }
    
}
相关文章
|
3天前
|
分布式计算 Java API
Java 8新特性之Lambda表达式与Stream API
【4月更文挑战第16天】本文将介绍Java 8中的两个重要新特性:Lambda表达式和Stream API。Lambda表达式是Java 8中引入的一种新的编程语法,它允许我们将函数作为参数传递给其他方法,从而使代码更加简洁、易读。Stream API是Java 8中引入的一种新的数据处理方式,它允许我们以声明式的方式处理数据,从而使代码更加简洁、高效。本文将通过实例代码详细讲解这两个新特性的使用方法和优势。
|
7天前
|
Java
Java 14 强势登场:Switch 表达式的进化之路
Java 14 强势登场:Switch 表达式的进化之路
13 0
|
9天前
|
Java 开发者
Java中的Lambda表达式:简洁、灵活的编程利器
在现代软件开发中,编写简洁、高效的代码是至关重要的。Java中的Lambda表达式为开发者提供了一种简洁、灵活的编程方式,使得代码更具可读性和可维护性。本文将探讨Lambda表达式的基本概念、语法结构以及在实际项目中的应用,以帮助读者更好地理解和运用这一强大的编程工具。
5 0
|
10天前
|
算法 Java 开发者
Java中的多线程编程:概念、实现与性能优化
【4月更文挑战第9天】在Java编程中,多线程是一种强大的工具,它允许开发者创建并发执行的程序,提高系统的响应性和吞吐量。本文将深入探讨Java多线程的核心概念,包括线程的生命周期、线程同步机制以及线程池的使用。接着,我们将展示如何通过继承Thread类和实现Runnable接口来创建线程,并讨论各自的优缺点。此外,文章还将介绍高级主题,如死锁的预防、避免和检测,以及如何使用并发集合和原子变量来提高多线程程序的性能和安全性。最后,我们将提供一些实用的性能优化技巧,帮助开发者编写出更高效、更稳定的多线程应用程序。
|
8天前
|
安全 算法 Java
深入理解Java并发编程:线程安全与性能优化
【4月更文挑战第11天】 在Java中,高效的并发编程是提升应用性能和响应能力的关键。本文将探讨Java并发的核心概念,包括线程安全、锁机制、线程池以及并发集合等,同时提供实用的编程技巧和最佳实践,帮助开发者在保证线程安全的前提下,优化程序性能。我们将通过分析常见的并发问题,如竞态条件、死锁,以及如何利用现代Java并发工具来避免这些问题,从而构建更加健壮和高效的多线程应用程序。
|
1天前
|
安全 Java
java多线程(一)(火车售票)
java多线程(一)(火车售票)
|
1天前
|
安全 Java 调度
Java并发编程:深入理解线程与锁
【4月更文挑战第18天】本文探讨了Java中的线程和锁机制,包括线程的创建(通过Thread类、Runnable接口或Callable/Future)及其生命周期。Java提供多种锁机制,如`synchronized`关键字、ReentrantLock和ReadWriteLock,以确保并发访问共享资源的安全。此外,文章还介绍了高级并发工具,如Semaphore(控制并发线程数)、CountDownLatch(线程间等待)和CyclicBarrier(同步多个线程)。掌握这些知识对于编写高效、正确的并发程序至关重要。
|
1天前
|
安全 Java 程序员
Java中的多线程并发编程实践
【4月更文挑战第18天】在现代软件开发中,为了提高程序性能和响应速度,经常需要利用多线程技术来实现并发执行。本文将深入探讨Java语言中的多线程机制,包括线程的创建、启动、同步以及线程池的使用等关键技术点。我们将通过具体代码实例,分析多线程编程的优势与挑战,并提出一系列优化策略来确保多线程环境下的程序稳定性和性能。
|
2天前
|
缓存 分布式计算 监控
Java并发编程:深入理解线程池
【4月更文挑战第17天】在Java并发编程中,线程池是一种非常重要的技术,它可以有效地管理和控制线程的执行,提高系统的性能和稳定性。本文将深入探讨Java线程池的工作原理,使用方法以及在实际开发中的应用场景,帮助读者更好地理解和使用Java线程池。
|
2天前
|
存储 安全 Java
Java中的容器,线程安全和线程不安全
Java中的容器,线程安全和线程不安全
10 1