快速使用java8 的Optional减少if else
该类主要用于处理一些可能为null的变量,而同时避免写if(xx==null){..} else{..} 这类代码
首先看入口nullable
/**
* 可以看到Optional已经自动分配了of()/empty()
*/
public static <T> Optional<T> ofNullable(T value) {
return value == null ? empty() : of(value);
}
接下来则是Optional的常见用法,都是一行代码搞定
TestDemo testDemo = new TestDemo();
//根据testDemo是否为null,为变量设置不同值(不同的返回值)
int count3 = Optional.ofNullable(testDemo).map(item -> item.getCount()).orElse(1);
//testDemo不为null,则对这个对象做操作
Optional.ofNullable(testDemo).ifPresent(item -> {
item.setCount(4);
});
//testDemo为null,则抛出异常
Optional.ofNullable(testDemo).orElseThrow(() -> new Exception());
java8的Map也有类似能力
//原来的代码
Object key = map.get("key");
if (key == null) {
key = new Object();
map.put("key", key);
}
// 上面的操作可以简化为一行,若key对应的value为空,会将第二个参数的返回值存入并返回
Object key2 = map.computeIfAbsent("key", k -> new Object());
以下是通过stream手动实现groupby sum(amount)的效果
//手动groupby identificationNum,calRule,orgId
ArrayList<CollectIncomeAmountResult> collectResults = new ArrayList<>(incomeAmounts.stream().collect(Collectors.toMap(k -> k.getIdentificationNum() + k.getCalRule() + k.getOrgId(), a -> a, (o1, o2) -> {
o1.setAmount(o1.getAmount().add(o2.getAmount()));
return o1;
})).values());
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· go语言实现终端里的倒计时
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· ollama系列01:轻松3步本地部署deepseek,普通电脑可用
· 按钮权限的设计及实现
· 25岁的心里话