美文网首页
(5条消息) map干掉两个for循环案例,空间复杂度优化_学习

(5条消息) map干掉两个for循环案例,空间复杂度优化_学习

作者: 学习微站 | 来源:发表于2022-12-03 17:16 被阅读0次

map干掉两个for循环,空间复杂度优化

//分组遍历
            if (CollectionUtils.isNotEmpty(dictGroupList)) {
                dictGroupList.forEach(dicGroup -> {
                    CollectShopCompareResp.ShopTemplateGroupResp shopTemplateGroupResp =
                            new CollectShopCompareResp.ShopTemplateGroupResp();
                    shopTemplateGroupResp.setDictGroup(dicGroup.getDictGroup());
                    shopTemplateGroupResp.setAttrTitle(dicGroup.getDataGroupText());
                    List<CollectShopCompareResp.ShopTemplateDetailResp> shopDetailList = new LinkedList<>();
                    openShopDetailList.forEach(item -> {
                        String attrKey = item.getAttrKey();
                        SysDataDict sysDataDict = allDataMap.get(attrKey);
                        String dictGroup2 = sysDataDict.getDictGroup();
                        if (dicGroup.equals(dictGroup2)) {
                            shopDetailList.add(item);
                        }
                    });
                    if (CollectionUtils.isNotEmpty(shopDetailList)) {
                        shopTemplateGroupResp.setShopDetailList(shopDetailList);
                    }
                    openShopGroupDetailList.add(shopTemplateGroupResp);
                });
            }

  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22

干掉

private List<CollectShopCompareResp.ShopTemplateGroupResp>
                                    generateShopGroupDetail(Map<String, SysDataDict> allDataMap,
                                    List<CollectShopCompareResp.ShopTemplateDetailResp> openShopDetailList) {
        List<CollectShopCompareResp.ShopTemplateGroupResp> openShopGroupDetailList = new LinkedList<>();
        if (CollectionUtils.isNotEmpty(openShopDetailList)) {
            //获取已有分组信息
            List<SysDataDict> dictGroupList = new LinkedList<>();
            openShopDetailList.forEach(item -> {
                String attrKey = item.getAttrKey();
                SysDataDict sysDataDict = allDataMap.get(attrKey);
                dictGroupList.add(sysDataDict);
                item.setDictGroup(sysDataDict.getDictGroup());
            });
            Map<String, List<SysDataDict>> dictGroupMap = dictGroupList.stream()
                    .collect(Collectors.groupingBy(SysDataDict::getDictGroup));
            Map<String, List<CollectShopCompareResp.ShopTemplateDetailResp>> detailMap = openShopDetailList.stream()
                    .collect(Collectors.groupingBy(CollectShopCompareResp.ShopTemplateDetailResp::getDictGroup));
            if (null == dictGroupMap || null == detailMap) {
                return openShopGroupDetailList;
            }
            //分组标题及内容
            dictGroupMap.keySet().forEach(item -> {
                CollectShopCompareResp.ShopTemplateGroupResp shopTemplateGroupResp
                        = new CollectShopCompareResp.ShopTemplateGroupResp();
                shopTemplateGroupResp.setDictGroup(item);
                shopTemplateGroupResp.setAttrTitle(allDataMap.get(item).getDataGroupText());
                shopTemplateGroupResp.setShopDetailList(detailMap.get(item));
                openShopGroupDetailList.add(shopTemplateGroupResp);
            });
        }
        return openShopGroupDetailList;
    }

  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32

本文使用 文章同步助手 同步

相关文章

  • dynamic programming

    本质 : 记忆化搜索避免重复计算 多重循环vs记忆化搜索多重循环:可以不用递归 可以对空间复杂度进行优化 步骤:初...

  • 背包问题

    01背包 优化空间复杂度,变为一维; 外循环依然是n从1->N, 注意内循环 v是从V->0,为什么内循环是V->...

  • map:169.求众数(投票算法)

    求众数 哈希Map 复杂度分析 时间复杂度:O(N) 空间复杂度: O(N) 投票算法 复杂度分析

  • 474. 一和零

    使用滚动数组法来优化空间复杂度

  • leetcode1-Two Sum

    问题: 解法1: 两个循环,时间复杂度O(N^2),空间复杂度O(1); 解法2:利用hash查找的特点O(1)...

  • 数据结构和算法(二)-空间换取时间

    介绍 我们写算法的目的是尽可能的采用时间复杂度和空间复杂度都很低的算法。所以优化算法的时候我们都从时间和空间两个维...

  • 程序员必须掌握的核心算法有哪些?

    一、算法最最基础1、时间复杂度 2、空间复杂度 一般最先接触的就是时间复杂度和空间复杂度的学习了,这两个概念以及如...

  • 常用算法

    时间复杂度 VS 空间复杂度 一般最先接触的就是时间复杂度和空间复杂度的学习了,这两个概念以及如何计算,是必须学的...

  • 看动画理解「链表」实现LRU缓存淘汰算法

    前几节学习了「链表」、「时间与空间复杂度」的概念,本节将结合「循环链表」、「双向链表」与 「用空间换时间的设计思想...

  • 算法复杂度速查表

    代码优化=时间复杂度+空间复杂度 -详见https://blog.csdn.net/qq_31780525/art...

网友评论

      本文标题:(5条消息) map干掉两个for循环案例,空间复杂度优化_学习

      本文链接:https://www.haomeiwen.com/subject/jwwqtdtx.html