小小Java人 2022-05-31 19:01 采纳率: 33.3%
浏览 34

Java 8 stream 流代码优化

问题遇到的现象和发生背景

重复代码怎么简化

问题相关代码,请勿粘贴截图
 List<Map<String, String>> data = mapper.queryBuyAndSaleDeclarePower(year, dates[0], dates[1], type, null);
        Map<String, Object> map = new HashMap(8);

        map.put("data", data);

        map.put("saleMax", (data == null || data.isEmpty()) ? "" : data.stream()
                .map(x -> x.get("SALEPOWER"))
                .filter(x->x!=null&& StringUtils.isNotBlank(x))
                .map(x->new BigDecimal(x))
                .max(BigDecimal::compareTo)
                .map(x->x.toString())
                .orElse("")
        );
        map.put("saleMin", (data == null || data.isEmpty()) ? "" : data.stream().map(x -> x.get("SALEPOWER")).filter(x->x!=null&& StringUtils.isNotBlank(x)).map(x->new BigDecimal(x)).min(BigDecimal::compareTo).map(x->x.toString()).orElse(""));
        map.put("saleSum", (data == null || data.isEmpty()) ? "" : data.stream().map(x -> x.get("SALEPOWER")).filter(x->x!=null&& StringUtils.isNotBlank(x)).map(x->new BigDecimal(x)).reduce(BigDecimal.ZERO, BigDecimal::add));

        map.put("buyMax", (data == null || data.isEmpty()) ? "" : data.stream().map(x -> x.get("BUYPOWER")).filter(x->x!=null&& StringUtils.isNotBlank(x)).map(x->new BigDecimal(x)).max(BigDecimal::compareTo).map(x->x.toString()).orElse(""));
        map.put("buyMin", (data == null || data.isEmpty()) ? "" : data.stream().map(x -> x.get("BUYPOWER")).filter(x->x!=null&& StringUtils.isNotBlank(x)).map(x->new BigDecimal(x)).min(BigDecimal::compareTo).map(x->x.toString()).orElse(""));
        map.put("buySum", (data == null || data.isEmpty()) ? "" : data.stream().map(x -> x.get("BUYPOWER")).filter(x->x!=null&& StringUtils.isNotBlank(x)).map(x->new BigDecimal(x)).reduce(BigDecimal.ZERO, BigDecimal::add));


        return map;
运行结果及报错内容

img

我的解答思路和尝试过的方法
我想要达到的结果

简化代码

  • 写回答

1条回答 默认 最新

  • 吕布辕门 后端领域新星创作者 2022-06-07 22:06
    关注

    这一块相同可以建一个中间变量算出来存储起来,这样就简化很多了。

    img

    评论

报告相同问题?

问题事件

  • 创建了问题 5月31日

悬赏问题

  • ¥15 谁有RH342练习环境
  • ¥15 STM32F407 DMA中断问题
  • ¥15 uniapp连接阿里云无法发布消息和订阅
  • ¥25 麦当劳点餐系统代码纠错
  • ¥15 轮班监督委员会问题。
  • ¥15 基于作物生长模型下,有限水资源的最大化粮食产量的资源优化模型建立
  • ¥20 关于变压器的具体案例分析
  • ¥15 生成的QRCode圖片加上下載按鈕
  • ¥15 板材切割优化算法,数学建模,python,lingo
  • ¥15 科来模拟ARP欺骗困惑求解