Java为了程序员方便使用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; } }

低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。
持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。
转载内容版权归作者及来源网站所有,本站原创内容转载请注明来源。
- 上一篇
顺序表数据结构在python中的应用
数据结构不仅仅指的数据值在逻辑上的结构,更有在存储空间上的位置结构,顺序表,故名思意是有一定顺序的数据结构。 顺序表最基本模型如图: 对于基本布局顺序表而言,它存储相同单元大小并且在内存地址上连续的数据,逻辑地址是其元素的逻辑顺序,物理地址第一个元素的内存地址加上离第一个元素的距离,如:e1物理地址是l0,那么e2的物理地址是e1的地址加上e1所占用的大小c,以此类推,en的物理地址是l0+(n-1)*c。 这种基本布局出现了一个问题,如果其中的元素大小不统一,那么岂不是要用最大存储单元作为基本单位,非常浪费空间,因此出现了外置顺序表,它是将元素的索引以相同单元大小连续存放,索引记录对应数据在内存上的地址,那么我们可以通过基本布局的方式去找到索引,再根据索引找到数据。 在熟悉了顺序表的基本模型后,我们再看顺表的结构,如图所示: 实际的顺序表
- 下一篇
JavaScript大师必须掌握的12个知识点
译者按: 前端技术涉及的越来越多! 原文: 10 things to learn on the way to becoming a JavaScript Master 译者: Fundebug 为了保证可读性,本文采用意译而非直译。另外,本文版权归原作者所有,翻译仅用于学习。 既然你对这篇文章感兴趣,我想你应该是一位前端开发,也许你有一份不错的工作、自主创业甚至是一位自由从业者。不知你的前端技术如何,也许你是一位新手,亦或是一位资深开发。如果你想让自己成为一个 JavaScript 大师,在此我列出 12 条必备知识: 1. 控制流(Control Flow) 我们从最基础的开讲。当然,它也是最重要的一个知识点。如果你连这个都没有整明白的话,那你的代码生活将会很艰难。 if else : 如果连这个都不知道,之前怎么码代码的? switch : 当有很多的情况要处理(>2)的时候,用它准没错。 for: 不要去编写重复的代码,请使用 for。for of和for in都十分便利。一个很大的优势在于 for 循环是阻塞式的,可以配合async await使用。 高阶的条件语句: 使...
相关文章
文章评论
共有0条评论来说两句吧...
文章二维码
点击排行
推荐阅读
最新文章
- MySQL8.0.19开启GTID主从同步CentOS8
- CentOS6,CentOS7官方镜像安装Oracle11G
- Mario游戏-低调大师作品
- CentOS8,CentOS7,CentOS6编译安装Redis5.0.7
- Docker使用Oracle官方镜像安装(12C,18C,19C)
- 设置Eclipse缩进为4个空格,增强代码规范
- CentOS6,7,8上安装Nginx,支持https2.0的开启
- CentOS关闭SELinux安全模块
- SpringBoot2更换Tomcat为Jetty,小型站点的福音
- SpringBoot2编写第一个Controller,响应你的http请求并返回结果