160805、oracle查询:取出每组中的第一条记录

本文分享了使用Java 8开发的经验,介绍了Optional特性的合理使用以减少NullPointerExceptions错误,探讨了Lambda表达式的最佳实践,并提供了Stream API的有效利用建议。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

在Java 9发布之前,我们来分享一些Java 8开发技巧

 

【以下为译文】

 

在使用JAVA 8进行开发多年后,结合个人使用IntelliJ IDEA的心得,我总结了以下几个JAVA8技巧供大家参考。

 

Optional

 

Optional 是一个被高度低估的特性,假若能把它运用恰当,其实它是能帮助减少大量的NullPointerExceptions(无效指针)错误的。以下是有关Optional使用的两个要点:

 

  • Optional应只用于返回类型而不是参数或域


如果你尝试这样处理,IntelliJ IDEA将会作出如下提示:

 

 

  • 避免使用调用的get()


Optional的强项是表达空值并让你对此做出处理。所以在进行下一步前进行值检查是很重要的。幸好IntelliJ IDEA也会对出做出提示:

 

 

取而代之,可以尝试使用orElse或orElseGet。

 

 

Lambda表达式的使用

 

Lambda是Java 8的又一个亮点,以下是有关Lambda的使用技巧:

 

  • 尽量简单


化繁为简是正确使用lambda表达式的关键。你可以把它们简化为单独一行,也可以在方法中重构更复杂的表达式。

 

 

  • 清晰明了


由于lambda表达式欠缺类型信息,所以有时会把类型信息放入参数中:

 

 

这未免过于冗长了,怎么办?我更倾向于为参数起个有意义的名字。例如:

 

 

Lambda表达式的设计

 

虽然我们较少会以lambda为参数来创建一个方法,但是如果有这样的需求,该如何处理呢?

 

  • IntelliJ IDEA能帮助实现函数型参数

 

 

  • 为你的函数性接口添加@FunctionalInterface


如果你需要自定义函数性接口,那么IntelliJ IDEA将会成为很好的监督者:

 

  • 覆盖提示:

 

 

  • 重复声明:

 

 

  • 为类而不是接口进行定义:

 

 

Streams(流)

 

Stream API是Java8新引入的,使用它有哪些地方注意的呢?

 

  • 有序排列

 

 

  • 使用方法引用


 

  • 进行集合递归时,尽量使用Streams API

 

请对比下列两段代码:

 

 

在数组循环中使用for循环

 

在元数据类型数组中使用for循环,将会得到最好的性能表现:

 

转载于:https://www.cnblogs.com/zrbfree/p/5755373.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值