当前位置: 首页 > news >正文

发布文章后马上更新网站主页泰州做网站 泰公网络科技公司

发布文章后马上更新网站主页,泰州做网站 泰公网络科技公司,网页界面设计的要求,如何修改wordpress代码什么时候可以使用 Lambda#xff1f;通常 Lambda 表达式是用在函数式接口上使用的。从 Java8 开始引入了函数式接口#xff0c;其说明比较简单#xff1a;函数式接口(Functional Interface)就是一个有且仅有一个抽象方法#xff0c;但是可以有多个非抽象方法的接口。 java8…什么时候可以使用 Lambda通常 Lambda 表达式是用在函数式接口上使用的。从 Java8 开始引入了函数式接口其说明比较简单函数式接口(Functional Interface)就是一个有且仅有一个抽象方法但是可以有多个非抽象方法的接口。 java8 引入 FunctionalInterface 注解声明该接口是一个函数式接口。一、语法抽象方法有且仅有一个接口使用 FunctionalInterface 注解进行标注接口中可以存在默认方法和静态方法实现如下形式/*** 定义函数式接口* 接口上标注FunctionalInterface 注解*/FunctionalInterfacepublic interface ICollectionService{/*** 定义打印方法*/void print();}在 Java8 以前已有大量函数式接口形式的接口(接口中只存在一个抽象方法)只是没有强制声明。例如 java.lang.Runnablejava.util.concurrent.Callablejava.security.PrivilegedActionjava.io.FileFilter 等Java8 新增加的函数接口在 java.util.function 包下它包含了很多类用来支持 Java 的函数式编程该包中的函数式接口如下对于 Java8 中提供的这么多函数式接口开发中常用的函数式接口有以下几个 PredicateConsumerFunctionSupplier。二、函数式接口实例2.1 Predicatejava.util.function.Predicate接口定义了一个名叫 test 的抽象方法它接受泛型 T 对象并返回一个 boolean 值。在对类型 T 进行断言判断时可以使用这个接口。通常称为断言型接口 。「字符串判空」Predicate p01(str)-str.isEmpty()||str.trim().isEmpty();/*** 测试传入的字符串是否为空*/System.out.println(p01.test());System.out.println(p01.test( ));System.out.println(p01.test(admin));「用户合法性校验」接口静态方法完成手机号合法校验功能方法返回函数式接口 Predicatepublic interface MyStringInter{public final  String checkPhone ^((13[0-9])|(14[5,7,9])|(15([0-3]|[5-9]))|(16[0-9]) |(17[0,1,3,5,6,7,8])|(18[0-9])|(19[8|9]))\\d{8}$;/*** 用户手机格式合法性*     返回L函数式接口Predicate 的实现 Lambda表达式* return*/static Predicate checkPhone(){return (e)- {return Pattern.compile(checkPhone).matcher(e).matches();};}}2.2 Consumerjava.util.function.Consumer接口定义了一个名叫 accept 的抽象方法它接受泛型 T没有返回值(void)。如果需要访问类型 T 的对象并对其执行某些操作可以使用这个接口通常称为消费型接口。「热销商品展示」/**热销商品测试数据*/Goods g01new Goods(1,iPad 2018款,3000,180, BigDecimal.valueOf(2300));Goods g02new Goods(6,小米平板4,5000,600, BigDecimal.valueOf(1900));Goods g03new Goods(9,微软 Surface Pro 6,100,50, BigDecimal.valueOf(8500));Goods g04new Goods(20,华为 荣耀平板5,1600,480, BigDecimal.valueOf(1500));List goods Arrays.asList(g01,g02,g03,g04);//Consumer 实现集合数据输出 Lambda替代匿名函数 实现Consumer接口goods.forEach(g-{System.out.println(g);});2.3 Functionjava.util.function.Function 接口定义了一个叫作 apply 的方法它接受一个泛型 T 的对象并返回一个泛型 R 的对象。如果需要定义一个 Lambda将输入的信息映射到输出可以使用这个接口(比如提取苹果的重量或把字符串映射为它的长度),通常称为功能型接口。「用户密码 Base64 编码」// 实现用户密码 Base64加密操作Function f01(password)-Base64.getEncoder().encodeToString(password.getBytes());// 输出加密后的字符串System.out.println(f01.apply(123456));2.4 Supplierjava.util.function.Supplier接口定义了一个 get 的抽象方法它没有参数返回一个泛型T的对象这类似于一个工厂方法,通常称为功能型接口。「外部Properties文件读取」public static Properties readFile(String fileName){Supplier supplier  () - {try {InputStream is  TestCase04.class.getClassLoader().getResourceAsStream(fileName);Properties prop  new Properties();prop.load(is);return prop;} catch (IOException e) {e.printStackTrace();return null;}};return supplier.get();}三、高阶函数Java8 中函数式接口中方法允许函数接口作为方法形参传入同时方法的结果为函数接口从而实现链式调用操作就像俄罗斯套娃那样当把套娃一个个打开时发现还有一个同样的小套娃在里面最终发现最里面的一个也是一个完整的套娃玩具此时的高阶函数是不是跟套娃有着惊人的相似之处呢。「多页面转发」String action  ;Predicate p01  (a) - StringUtils.isBlank(a);/*** 如果action 为空 或 index 或 main 转发到网站主页面* 链式判断 方法结果仍然为一个函数*/if (p01.or((a) - a.equals(index)).or((a) - a.equals(main)).test(action)) {System.out.println(网站主页面...);} else {System.out.println(其他页面...);}「多条件排序」这里以商品数据为例按商品销量、评论排序如果销量一致按照商品评论数排序/*** 实际开发数据通常从数据库获取* 这里使用测试数据*/Goods g01new Goods(1,小米9,1789,200, BigDecimal.valueOf(2500));Goods g02new Goods(2,华为Mate20,5000,3000, BigDecimal.valueOf(7000));Goods g03new Goods(3,OPPO R17,2000,2827, BigDecimal.valueOf(1500));Goods g04new Goods(4,魅族 Note9,2000,1600, BigDecimal.valueOf(1600));Goods g05new Goods(5,一加6T,8000,5000, BigDecimal.valueOf(3500));List goods Arrays.asList(g01,g02,g03,g04,g05);// 销量 与 评论排序 高阶函数使用Comparator comparator  (g1,g2)-g1.getSale()-g2.getSale();goods.sort(comparator.thenComparing(Comparator.comparing(g3 - g3.getComment())));goods.forEach((g)-System.out.println(g));高阶函数应用场景较多(这里查看源码相关高阶函数方法)如 Optinal 接口 filter、map 、orElseGet 等方法Stream 流操作等基本都会用到 Predicate, Consumer, Supplier, Function 等接口。四、函数式接口优势与应用场景函数式接口的引入结合 Lambda 的使用消除的匿名函数繁琐的代码使得代码结构简洁、紧凑第二点就是函数式接口中使用高阶函数可以很方便的实现链式调用代码清晰简洁同时引入的一种新的开发思想-函数式编程对于开发者来说只需要关注函数的规则设计实现即可。对于函数式接口应用后续介绍到的 Optinal、Stream 相关方法对于数据处理的使用频率较高同时也是构成函数式编程的核心内容。
http://wiki.neutronadmin.com/news/35942/

相关文章:

  • 正规设计兼职网站有哪些360官方下载官网
  • 威海网站建设公司排名给排水管道水压试验方案久久建筑网
  • .net网站开发教程网站开发一般用什么软件有哪些
  • 360上做网站杭州app建设
  • 个人网站建设存在哪些问题网站建设中如何设置外链接
  • 基于cms的企业网站建设最专业的企业营销型网站建设价格
  • 做网站分几个步骤成都网站建设备案
  • 做网站模板和服务器是一样的吗邢台建网站的公司
  • 网站查询备案信息济南的网站制作公司
  • 网站建设 招聘需求精品网站建设平台
  • 郑州网站app建设邮件服务商
  • 城市网站改版建设ajax做网站
  • 宣传电脑的网站开发企业vi设计一整套
  • 网站之前没备案中国城乡建设部网站证书查询
  • 石景山网站建设推广WordPress多页悬浮菜单
  • 有哪些专业做饰品的网站appapp 制作公司
  • 网站优化技术北京网站设计浩森宇特
  • 专业宣传片制作公司网站搭建谷歌seo
  • 沈阳手机网站开发网站备案密码有什么用
  • 深圳市龙岗区住房和建设局网站注册公司最低需要多少钱
  • 河北爱站网络科技有限公司qq小程序打不开怎么办
  • 网站怎么 备案wordpress 同义词
  • 网站建设运营合同书那个网站是专门做渔具的
  • seo网站内容网站做二维码
  • 网站制作高端网站建设Wordpress 仿站 工具
  • wordpress网站多层循环调用文章做百度移动网站排名
  • 雄安网站建设400多少钱友情链接交换形式有哪些
  • 厦门网站建设培训班制作一个软件的过程
  • 自己做网站微商南通高端网站建设咨询
  • 工业设计是干啥的宁波seo外包方案