待優化的代碼

        List<ActiveSub> activeSubs = ActiveSubMapperUtil.selectSubActiveShopList(activeSub, isInValidityPeriod, page, pageSize);
        List<Integer> activeIds = activeSubs.stream().map(ActiveSub::getId).collect(Collectors.toList());
        List<Map> maps = CommodityMapperUtil.selectQuantityAndWinRateByActiveId(activeIds);

        List<ActiveSubModel> activeSubModels = activeSubs.stream().map(activeSubTemp -> {
            Optional<Map> mapOptional = maps.stream().filter(map ->
                    activeSubTemp.getId().toString().equals(String.valueOf(map.get("activeId")))).findAny();
            ActiveSubModel activeSubModel = new ActiveSubModel();
            if (mapOptional.isPresent()) {
                activeSubModel.setTotalQuantity(Integer.valueOf(String.valueOf(mapOptional.get().get("totalQuantity"))));
                activeSubModel.setTotalWinRate(Integer.valueOf(String.valueOf(mapOptional.get().get("totalWinRate"))));
            } else {
                activeSubModel.setTotalQuantity(0);
                activeSubModel.setTotalWinRate(0);
            }
           /**
             * 不建議使用Apache BeanUtils進行屬性的copy,性能較差。可以使用Spring BeanUtils,Cglib BeanCopier。
             * BeanCopier beanCopier = BeanCopier.create(ActiveSub.class, ActiveSubModel.class, false);
             * beanCopier.copy(activeSubTemp, activeSubModel, null);
             * return activeSubModel;
             */
            BeanUtils.copyProperties(activeSubTemp, activeSubModel);
            return activeSubModel;
        }).collect(Collectors.toList());
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章