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

java中使用lambda简化代码

前言

读过ibm上lambda系列的文章这里,做下总结

使用IntStream取代简单for循环

对于简单的for循环可以IntStream取代,如下

//normal
for(int i=0;i<4;i++){
System.out.print(i + "...")
}

//lambda
IntStream.range(0,4).forEach(i->System.out.print(i + "..."))
复制代码

尽量去除冗余信息

lambda可以自己推断部分参数,因此可以省略一些信息

  1. 传递形参为实参
//简化前
forEach(e->System.out.println(e));

//简化后
forEach(System.out::println);
复制代码
//简化前
.map(e -> Integer.valueOf(e))

//简化后
.map(Integer::valueOf)
复制代码

  1. 传递形参给目标
//简化前
.map(e -> Integer.valueOf(e))

//简化后

.map(Integer::valueOf)
复制代码

  1. 传递构造函数调用
//简化前
.collect(toCollection(() -> new LinkedList<Double>()));

//简化后
.collect(toCollection(LinkedList::new));
复制代码

  1. 传递多个实参
//简化前
.reduce(0, (total, e) -> Integer.sum(total, e)));

//简化后
.reduce(0, Integer::sum));
复制代码

//简化前
.reduce("", (result, letter) -> result.concat(letter)));
//简化后
.reduce("", String::concat));
复制代码

总结

一般来说对于可以简化的语句,idea会给出提示,有一部分需要我们有意识的去那样写,唉,lambda真香

相关文章:

  • 设计要做到扩展性强还挺难的
  • 云宏与英特尔携手发布了可全面兼容主流虚拟化解决方案
  • 收集 Kubernetes 资源统计数据的新工具
  • 从零开始搭建物联网平台(7):使用Vue编写前端页面
  • Java 面向对象之构造方法
  • 我与Jetbrains的这些年
  • input实现文字超出省略号功能
  • 复习Javascript专题(四):js中的深浅拷贝
  • stackoverflow:为什么排序后的数组要比未排序数组运行快3倍以上?
  • 胡小林:把日常生活中碰到的事变成我们发露忏悔的机会
  • 分布式消息队列 Kafka
  • 网站如何做好SEO优化,该怎么选择SEO软件?
  • JAVA入门到精通-第67讲-sqlserver作业讲评
  • Tcp/Ip 三次握手与四次挥手
  • jQuery操作表格(table)的常用方法、技巧汇总
  • 《用数据讲故事》作者Cole N. Knaflic:消除一切无效的图表
  • 345-反转字符串中的元音字母
  • ECMAScript入门(七)--Module语法
  • IE报vuex requires a Promise polyfill in this browser问题解决
  • Java方法详解
  • Linux后台研发超实用命令总结
  • Median of Two Sorted Arrays
  • php面试题 汇集2
  • RxJS: 简单入门
  • session共享问题解决方案
  • Vue UI框架库开发介绍
  • Webpack 4 学习01(基础配置)
  • Webpack4 学习笔记 - 01:webpack的安装和简单配置
  • 如何邀请好友注册您的网站(模拟百度网盘)
  • 世界上最简单的无等待算法(getAndIncrement)
  • 一文看透浏览器架构
  • [Shell 脚本] 备份网站文件至OSS服务(纯shell脚本无sdk) ...
  • 【云吞铺子】性能抖动剖析(二)
  • 分布式关系型数据库服务 DRDS 支持显示的 Prepare 及逻辑库锁功能等多项能力 ...
  • ​​​​​​​​​​​​​​Γ函数
  • ​软考-高级-系统架构设计师教程(清华第2版)【第20章 系统架构设计师论文写作要点(P717~728)-思维导图】​
  • #鸿蒙生态创新中心#揭幕仪式在深圳湾科技生态园举行
  • #基础#使用Jupyter进行Notebook的转换 .ipynb文件导出为.md文件
  • #周末课堂# 【Linux + JVM + Mysql高级性能优化班】(火热报名中~~~)
  • $emit传递多个参数_PPC和MIPS指令集下二进制代码中函数参数个数的识别方法
  • (1)(1.8) MSP(MultiWii 串行协议)(4.1 版)
  • (16)Reactor的测试——响应式Spring的道法术器
  • (C语言)深入理解指针2之野指针与传值与传址与assert断言
  • (Matalb分类预测)GA-BP遗传算法优化BP神经网络的多维分类预测
  • (超简单)使用vuepress搭建自己的博客并部署到github pages上
  • (十六)Flask之蓝图
  • (四)linux文件内容查看
  • (原創) 如何優化ThinkPad X61開機速度? (NB) (ThinkPad) (X61) (OS) (Windows)
  • .gitignore
  • .Net Attribute详解(上)-Attribute本质以及一个简单示例
  • .NET Core 成都线下面基会拉开序幕
  • .NET Micro Framework初体验
  • .net 受管制代码
  • .NET设计模式(8):适配器模式(Adapter Pattern)
  • .NET学习教程二——.net基础定义+VS常用设置