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

网站开发语言wap是什么制作网站微信登陆入口

网站开发语言wap是什么,制作网站微信登陆入口,揭阳市建设局网站,鄂州网站建设价格目录 一、概述 二、Lambda语法的历史 2.1 Lambda名字的含义 2.2 Lambda的历史 三、Lambda语法的核心接口 3.1 Lambda的四大核心接口 3.1.1 概述 3.1.2 Consumer 接口 3.1.3 Supplier 接口 3.1.4 Function 接口, 3.1.5 Predicate 接口 四、Lambda的引用 4.1 概… 目录 一、概述 二、Lambda语法的历史 2.1 Lambda名字的含义 2.2 Lambda的历史 三、Lambda语法的核心接口 3.1 Lambda的四大核心接口 3.1.1 概述 3.1.2 Consumer 接口 3.1.3 Supplier 接口 3.1.4 Function 接口, 3.1.5 Predicate 接口 四、Lambda的引用 4.1 概述 4.2 方法的引用 4.2.1 对象::实例方法 4.2.2 类::静态方法 4.2.3 类::实例方法 4.3 构造器的引用 4.4 数组的引用 五、Lambda的使用场景 5.1 简化编程 5.2 函数式接口 5.3 事件处理 5.4 并行处理 一、概述 Lambda 表达式也可称为闭包它是推动 Java 8 发布的最重要新特性。Lambda 允许把函数作为一个方法的参数函数作为参数传递进方法中它允许我们以简洁、可读的方式表示匿名函数。通过Lambda表达式我们可以将代码块作为参数传递给其他函数从而实现更灵活的编程。 二、Lambda语法的历史 2.1 Lambda名字的含义 Lambda 这个名字 并不是一个什么的缩写它是希腊第十一个字母 λ 的读音同时它也是微积分函数中的一个概念所表达的意思是一个函数入参和出参定义在编程语言中其实是借用了数学中的 λ并且多了一点含义在编程语言中功能代表它具体功能的叫法是匿名函数Anonymous Function根据百科的解释匿名函数在计算机编程中是指一类无需定义标识符函数名的函数或子程序。 2.2 Lambda的历史 说起Lambda 的历史虽然它在 JDK8 发布之后才正式出现但是在编程语言界它是一个具有悠久历史的东西最早在 1958 年在Lisp 语言中首先采用而且虽然Java脱胎于C但是C在2011年已经发布Lambda 了但是 JDK8 的 LTS 在2014年才发布现代编程语言则是全部一出生就自带 Lambda 支持。 三、Lambda语法的核心接口 3.1 Lambda的四大核心接口 3.1.1 概述 Java8为了我们方便编程就为我们提供了四大核心函数式接口分别是ConsumerT : 消费型接口、SupplierT : 供给型接口、FunctionT, R : 函数型接口、PredicateT : 断言型接口具体如下图所示 3.1.2 ConsumerT 接口 代码例子 package main.java.com.ningzhaosheng.lambada.demo;import java.util.function.Consumer;/*** author ningzhaosheng* date 2024/6/27 17:57:21* description Consumer接口 测试例子*/ public class TestConsumer {public static void main(String[] args) {task(66.66,(m) - System.out.println(本次一共花费m 元!!));}public static void task(double money, ConsumerDouble consumer){consumer.accept(money);} } 3.1.3 SupplierT 接口 代码例子 package main.java.com.ningzhaosheng.lambada.demo;import java.util.ArrayList; import java.util.List; import java.util.function.Supplier;/*** author ningzhaosheng* date 2024/6/27 18:03:18* description Supplier 接口测试例子*/ public class TestSupplier {public static void main(String[] args) {ListInteger list getNumList(10, () - (int) (Math.random() * 100));for (Integer num : list) {System.out.println(随机数 num);}}public static ListInteger getNumList(int num, SupplierInteger supplier) {ListInteger list new ArrayListInteger();for (int i 0; i num; i) {Integer n supplier.get();list.add(n);}return list;} } 3.1.4 FunctionT, R 接口 代码例子 package main.java.com.ningzhaosheng.lambada.demo;import java.util.function.Function;/*** author ningzhaosheng* date 2024/6/27 18:10:01* description Function 接口测试例子*/ public class TestFunction {public static void main(String[] args) {String trimStr stringHandler(\t\t\t hello,你好啊升哥,(str)-str.trim());System.out.println(字符串去掉空格trimStr);String newStr stringHandler(桃子姑娘是一个很漂亮的姑娘我们青梅竹马两小无猜我很喜欢桃子姑娘,(str)-str.substring(26));System.out.println(截取字符串newStr);}public static String stringHandler(String str, FunctionString,String function){return function.apply(str);} } 3.1.5 PredicateT 接口 代码例子 package main.java.com.ningzhaosheng.lambada.demo;import java.util.ArrayList; import java.util.Arrays; import java.util.List; import java.util.function.Predicate;/*** author ningzhaosheng* date 2024/6/27 18:21:37* description Predicate 接口测试例子*/ public class TestPredicate {public static void main(String[] args) {ListString list Arrays.asList(Hello, 你好啊升哥, HashMap, Python, JDK8, Map, List, Set, Collection);ListString stringList filterStr(list, (str) - str.length() 5);for (String string : stringList) {System.out.println(打印满足条件的字符串 string);}}public static ListString filterStr(ListString strings, PredicateString predicate) {ListString stringList new ArrayListString();for (String str : strings) {if (predicate.test(str))stringList.add(str);}return stringList;} } 四、Lambda的引用 4.1 概述 当要传递给Lambda体的操作已经有实现的方法了可以使用方法引用 方法引用使用操作符 “ :: ” 将方法名和对象或类的名字分隔开来。 如下三种主要使用情况 对象 :: 实例方法类 :: 静态方法类 :: 实例方法 可以将方法引用理解为 Lambda 表达式的另外一种表现形式方法引用所引用的方法的参数列表与返回值类型需要与函数式接口中抽象方法的参数列表和返回值类型保持一致 4.2 方法的引用 4.2.1 对象::实例方法 代码例子一 package main.java.com.ningzhaosheng.lambada.demo1.method;import java.io.PrintStream; import java.util.function.Consumer;/*** author ningzhaosheng* date 2024/6/28 10:03:20* description 测试对象::实例方法引用*/ public class TestObjectAndInstanceMethod {public static void main(String[] args) {ConsumerString con1 (str)-System.out.println(str);con1.accept(Hello World);PrintStream ps System.out;ConsumerString con2 ps::println;con2.accept(Hello Java8!);ConsumerString con3 System.out::println;con3.accept(Hello Lambada!);} } 代码例子二 package main.java.com.ningzhaosheng.lambada.demo1.method;import main.java.com.ningzhaosheng.lambada.demo1.Employee;import java.util.function.Supplier;/*** author ningzhaosheng* date 2024/6/28 10:13:54* description 测试对象::实例方法引用*/ public class TestObjectAndInstanceMethod1 {public static void main(String[] args) {Employee em new Employee();em.setAge(20);em.setName(张三);Supplier? extends String supplier ()-em.getName();String str supplier.get();System.out.println(str);SupplierInteger supplier1 em::getAge;Integer age supplier1.get();System.out.println(age);} } 4.2.2 类::静态方法 代码例子 package main.java.com.ningzhaosheng.lambada.demo1.method;import java.util.Comparator;/*** author ningzhaosheng* date 2024/6/28 10:28:20* description 测试类::静态方法引用*/ public class TestClassAndStaticMethod {public static void main(String[] args) {ComparatorInteger comparator (x,y)-Integer.compare(x,y);System.out.println(comparator.compare(10,20));ComparatorInteger comparator1 Integer::compare;System.out.println(comparator1.compare(100,300));} } 4.2.3 类::实例方法 代码例子 package main.java.com.ningzhaosheng.lambada.demo1.method;import java.util.function.BiPredicate;/*** author ningzhaosheng* date 2024/6/28 10:34:11* description 测试类::实例方法引用*/ public class TestClassAndInstanceMethod {public static void main(String[] args) {BiPredicateString,String bp1 (str1,str2)-str1.equals(str2);System.out.println(bp1.test(Hello,hello));BiPredicateString,String bp2 String::equals;System.out.println(bp2.test(Java,Java));} } 4.3 构造器的引用 代码例子 package main.java.com.ningzhaosheng.lambada.demo1.construct;import main.java.com.ningzhaosheng.lambada.demo1.Employee;import java.util.function.BiFunction; import java.util.function.Function; import java.util.function.Supplier;/*** author ningzhaosheng* date 2024/6/28 10:44:03* description 测试构造器引用*/ public class TestConstruct {public static void main(String[] args) {// 无参构造SupplierEmployee supplier () - new Employee();System.out.println(supplier.get());// 无参构造SupplierEmployee supplier1 Employee::new;System.out.println(supplier1.get());// 一个参数构造FunctionInteger, Employee function Employee::new;Employee employee function.apply(1001);System.out.println(employee.toString());// 两个参数构造BiFunctionInteger, String, Employee biFunction Employee::new;Employee employee1 biFunction.apply(1001, 张三);System.out.println(employee1.toString());}} 4.4 数组的引用 代码例子: package main.java.com.ningzhaosheng.lambada.demo1.array;import java.util.function.Function;/*** author ningzhaosheng* date 2024/6/28 10:55:26* description 测试数组引用*/ public class TestArray {public static void main(String[] args) {FunctionInteger,String[] function (x)-new String[x];String[] strings function.apply(10);System.out.println(strings.length);FunctionInteger,String[] function1 String[]::new;String[] strings1 function1.apply(50);System.out.println(strings1.length);} } 五、Lambda的使用场景 通过使用Lambda表达式我们可以写出更简洁、易读的代码提高代码的可维护性和开发效率。下面列举一下它的使用场景。 5.1 简化编程 使用lambda表达式可以简化代码避免定义一大堆小方法。 5.2 函数式接口 只包含一个抽象方法的接口称为函数式接口。这些接口可以使用lambda表达式。 例如 Runnable r () - System.out.println(Hello, World!); new Thread(r).start(); 5.3 事件处理 在Java GUI编程中lambda表达式经常用于按钮点击等事件的处理。 例如 JButton button new JButton(Click Me); button.addActionListener(event - System.out.println(Button clicked!)); 5.4 并行处理 Java 8的流(Stream)库使用lambda表达式来进行并行处理。 例如 package main.java.com.ningzhaosheng.lambada.demo2;import java.util.ArrayList; import java.util.List; import java.util.concurrent.ThreadLocalRandom;/*** author ningzhaosheng* date 2024/7/2 9:52:30* description 测试Java8 lambda stream*/ public class TestLambdaStream {public static void main(String[] args) {// 创建一个包含一百万个随机整数的列表ListInteger numbers new ArrayList();for (int i 0; i 100000; i) {numbers.add(ThreadLocalRandom.current().nextInt(199));}//顺序流的处理long startTimeSeq System.currentTimeMillis();double averageSequential numbers.stream().mapToInt(Integer::intValue).average().getAsDouble();long endTimeSeq System.currentTimeMillis();System.out.println(sequential Average: averageSequential);System.out.println(Time taken (Sequential): (endTimeSeq - startTimeSeq) ms);//并行流的处理long startTimePar System.currentTimeMillis();double averageParallel numbers.parallelStream().mapToInt(Integer::intValue).average().getAsDouble();long endTimePar System.currentTimeMillis();System.out.println(parallel Average: averageParallel);System.out.println(Time taken (Parallel): (endTimePar - startTimePar) ms);} } 可以看出顺序流和并行流得到了相同的平均值但并行流的处理时间明显少于顺序流。因为并行流能够将任务拆分成多个小任务并在多个处理器核心上同时执行这些任务。 当然并行流也有缺点 对于较小的数据集可能并行流更慢数据处理本身的开销较大比如复杂计算、大量IO操作、网络通信等可能并行流更慢可能引发线程安全问题 好了本次内容就分享到这欢迎关注本博主。如果有帮助到大家欢迎大家点赞关注收藏有疑问也欢迎大家评论留言
http://www.pierceye.com/news/603298/

相关文章:

  • 电子商务网站建设和维护公司网站可以免费建吗
  • storyset自定义插画网站wordpress 回复下载插件
  • 公司网站代码模板下载山东城建设计院网站
  • 茂港网站建设公司妇科医院网站建设怎么做
  • 怎么自己改自己做的网站的图片策划案网站
  • 养殖p2p网站建设网址大全浏览器下载
  • 建立网站的过程沈阳做网站直播的公司
  • 沈阳市网站设计公司大全电商毕业设计作品
  • 做网站怎么赚钱滑县电桂林两江四湖景区导游词
  • 加快门户网站建设文网站建设费用计入什么科目
  • 网站建设合同英文模板下载湖州做网站的公司
  • 网站内容页设计济南网站优化
  • 简洁中文网站模板下载军事新闻头条最新消息
  • 湘潭网站建设 诚信磐石网络开发app软件的步骤
  • 阿里云网站备案网站建设方案书私有云可以建设网站
  • 网站建设如何增加流量做杂志的网站有哪些
  • 可信网站认证有用建设网站什么语言
  • 福州网站建设 大公司wordpress顺序
  • 为什么网站开发要用架构个人主页网站制作教程
  • 东莞教育网站建设做网站工资还没有文员高
  • 郑州网站制作工作室国内网站开发
  • 现在什么网站做外贸的最好wordpress window系统
  • 柬埔寨网赌网站开发新网络营销
  • html5毕业设计作品苏州关键词优化排名推广
  • 网站建设包括的内容相册在线设计平台
  • 花生壳可做网站吗微商城开发用华网天下首选
  • 口岸地区网站建设内容塔里木油田公司档案馆网站建设研究
  • 网站备案属于公司哪一块石家庄最新状况
  • 秦州建设网站免费代刷网站推广
  • 怎么查看一个网站是用什么程序做的我的家乡湛江网站设计