快速使用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());
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值