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

海事网站开发北京比较大的软件开发公司

海事网站开发,北京比较大的软件开发公司,深圳网站设计推荐柚米,wordpress cat_namelambda javaJava 8的主题是lambdas。 我已经注意到#xff0c;对于许多Java程序员来说#xff0c;lambda都是非常难的材料。 因此#xff0c;让我们尝试对它们有一个基本的了解。 首先#xff0c;lambda到底是什么#xff1f; Lambda是一个匿名函数#xff0c;与常规函数… lambda java Java 8的主题是lambdas。 我已经注意到对于许多Java程序员来说lambda都是非常难的材料。 因此让我们尝试对它们有一个基本的了解。 首先lambda到底是什么 Lambda是一个匿名函数与常规函数不同它没有绑定到标识符即它没有名称。 这些函数可以作为参数传递给其他函数称为高阶函数。 假设我们的应用程序必须从系统的不同位置写入一堆文件。 我们不想每次都处理已检查的异常[请参阅“ 例外已检查和未检查”以获取有关已检查的异常的更多信息]。 因此我们决定编写一个低级的writeToFile函数该函数打开FileWriter并将其传递给可以安全地写入文件的函数。 使用此低级函数我们编写以下代码。 writeToFile(todo.txt, new FileWriteFunction() {Overridepublic void apply(Writer file) throws IOException {file.write(learn about lambdas\n);file.write(learn stream API\n);} }) 我们传递给writeToFile的对象是FileWriteFunction的匿名实现[是匿名的因为我们没有将其命名为类]。 它具有单个功能因此可以有效地传递匿名功能。 在Java的世界中这些有时称为回调 。 可能您之前至少使用过几次也许没有引起注意。 该匿名对象实际上是lambda。 但这显然不像传递函数。 语法非常笨拙。 这正是Java 8中的变化。 有了Java 8中对lambda的语法支持代码的读取就像我们传递函数一样。 使用Java 8 lambda我们将上述代码重写如下。 writeToFile(todo.txt, file - {file.write(learn about lambdas\n);file.write(learn stream API\n); }) 这样更好 它强调重要的代码并隐藏了大多数笨拙的部分。 通常lambda与闭包可互换使用即词汇功能。 虽然它们都是匿名函数但是闭包的定义是它是包含绑定变量的函数。 即闭包包括一个引用表该表包含对局部变量的引用。 例如如果我们接受要写入文件的参数data 则使用闭包。 void save(String data) {writeToFile(file.db, file - file.write(data) ); } 匿名内部类限制对最终变量的访问而闭包提供对任何变量的访问。 但是变量实际上是闭包的最终变量因此无法重新分配。 那lambdas的编译呢 Java 8是否仅使用一种方法就匿名内部类仅提供了一勺语法糖 不是不是 的确它允许对任何单方法匿名内部类使用lambda语法。 但是lambda不会编译为内部类。 相反编译器在定义的类中输出lambda$方法并使用invokedynamic调度该调用。 因此现在您知道了如何在Java 8中使用lambda。虽然lambda本身非常有用但在将它们应用于集合时更是如此。 新的Stream API通过为集合提供功能更强大的API来替代迭代器 java.util.stream.Stream 。 Stream上最值得注意的功能是 collect filter map和reduce 。 从一个简单的例子开始这里是如何对列表中的所有数字求和。 asList(1,2,3,4,5).stream().reduce(0, (acc, value) - acc value) // 15 通过从零开始将每个值加到累加器上可以减少序列。 为了进行比较传统上您会编写一个循环。 int acc 0; for (int n : asList(1,2,3,4,5))acc n; acc // 15 继续求和仅求奇数。 首先我们filter奇数然后reduce 。 asList(1,2,3,4,5).stream().filter(Predicates::odd).reduce(0, (acc, n) - acc n) // 9 filter的参数是对我使用的Predicates类中的静态odd函数的函数引用。 顾名思义这是一个布尔函数用于测试数字是否为奇数。 到目前为止一切都很好。 现在假设我们要将一厘米大小的列表转换为以英寸为单位的等效大小。 我们为此使用map 。 ListInch inches centimeters.stream().map(Centimeter::toInches).collect(Collectors.toList()) 通过将toInches函数应用到centimeters集合中的每个项目将centimeters映射为英寸。 从本质上讲 Stream是连续的。 它用于描述要应用于集合的操作。 但是要获得结果必须收集数据。 这就是collect功能的目的。 它将流的元素减少为可变容器例如列表。 使用Stream API和lambda可以大大简化用于集合的代码并使代码更具表现力。 与使用破坏性操作例如forEach 相比首选使用非破坏性操作例如map filter 使代码更易于推理。 而已 这些是您需要了解的Java 8中的lambda和闭包的基础知识。当然关于lambda的内容还有很多要写的但这是另一篇文章。 参考 Software Craft博客上的JCG合作伙伴 Bart Bakker 对Java lambda的介绍 。 翻译自: https://www.javacodegeeks.com/2013/10/introduction-to-java-lambdas.htmllambda java
http://www.zqtcl.cn/news/500421/

相关文章:

  • 普洱市建设局网站重庆工程建设信息查询
  • 上海网站设计多少钱wap网站生成微信小程序
  • 广州网站到首页排名做图骂人的图片网站
  • 公司的网站建设价格wordpress付费阅读文章功能
  • 飞鸽网站建设建设网站什么软件比较好
  • 网站名称 规则网站seo完整seo优化方案
  • 昆明网站建设高端定制wordpress建站课程
  • 建网站外包wordpress 便利贴
  • 硅胶 技术支持 东莞网站建设网站互联网接入商
  • 太平洋建设21局网站微信网页版登录手机版
  • 站长统计芭乐鸭脖小猪电商平台哪个最好
  • 女与男爱做电影网站免费企业公司网站建设方案
  • 尚品本色木门网站是哪个公司做的大庆建设公司网站
  • 做网做网站建设的网站怎么用别人网站做模板
  • 电子商务网站购物车怎么做网站站点创建成功是什么意思
  • 如何做招聘网站的评估新浪微博可以做网站吗
  • 加强网站建设的制度wordpress如何清空
  • 轻松筹 的网站价格做网站建设意识形态
  • 有.net源码如何做网站湖南宣传片制作公司
  • dede网站模板怎么安装教程青岛需要做网站的公司
  • 静态双语企业网站后台源码北京网站关键词优化
  • 石家庄手机网站建设公司wordpress侧边栏显示子分类文字数
  • 公司网站客户案例个人做 网站2019
  • 个人网站怎么申请销售策划
  • 网站被黑 禁止js跳转企业为什么要建立集团
  • 建设网站的各种问题上海品牌女装排行榜前十名
  • seo优化搜索引擎网站优化推广网络关键词优化-乐之家网络科技商城网站备案能通过吗
  • 江门网站建设推广策划网站改版的宣传词
  • 网站建设三大部分国外购物平台网页界面设计
  • 公司商城网站建设方案wordpress旗舰