首页 > 其他分享 >5.6

5.6

时间:2024-05-06 23:33:06浏览次数:18  
标签:metroLineHashMap 5.6 地铁站 metroStationGraph 线路 currentMetroStation ID

public String loadMetroSystem(MetroSystem metroSystem) {
    if (!allMetroStationHashMaps.containsKey(metroSystem.getSystemId())) {
        //创建一个新的无向图metroStationGraph,用于表示地铁站点之间的连接关系  DefaultEdge.class表示边的类型 默认边
        Graph<String, DefaultEdge> metroStationGraph = new DefaultUndirectedGraph<>(DefaultEdge.class);
        //创建了一个 DijkstraShortestPath(迪杰斯特拉最短路径)算法实例,用于在给定的地铁站点图 metroStationGraph 上计算最短路径。
        DijkstraShortestPath<String, DefaultEdge> dijkstraAlgMetroSearch = new DijkstraShortestPath<>(metroStationGraph);
        //地铁站点
        HashMap<String, MetroStation> metroStationHashMap = new HashMap<>();
        //地铁线路
        HashMap<String, MetroLine> metroLineHashMap = new HashMap<>();
        //添加地铁站点到无向图metroStationGraph
        for (MetroLine metroLine : metroSystem.getLines()) {
            // 将线路id作为键 线路作为值存到metroLineHashMap中
            metroLineHashMap.put(metroLine.getLineId(), metroLine);
            //存储前一个站点的信息
            MetroStation previousMetroStation = null;
            //遍历线路上的 站点信息
            for (MetroStation currentMetroStation : metroLine.getStations()) {
                //将当前遍历到的地铁站点的ID添加到地铁站点图 metroStationGraph 中作为一个顶点。
                metroStationGraph.addVertex(currentMetroStation.getStationId());
                //如果前一个地铁站点不为null(也就是不是该线路上的第一个站点),则在地铁站点图 metroStationGraph 中添加一条边,连接前一个地铁站点和当前遍历到的地铁站点。
                if (previousMetroStation != null) {
                    metroStationGraph.addEdge(previousMetroStation.getStationId(), currentMetroStation.getStationId());
                }
                // 更新 previousMetroStation 的值为当前遍历到的地铁站点,以便在下一次循环中使用。
                previousMetroStation = currentMetroStation;
            }
        }
        //循环遍历地铁系统中的每一条地铁线路。
        for (MetroLine metroLine : metroSystem.getLines()) {
            //循环遍历每条地铁线路上的各个站点。
            for (MetroStation currentMetroStation : metroLine.getStations()) {
                //检查metroStationHashMap是否已经包含当前地铁站点的信息
                if (!metroStationHashMap.containsKey(currentMetroStation.getStationId())) {
                    /*
                    通过currentMetroStation.getLineIds().stream()获取当前地铁站点所属的地铁线路ID流。
                    从这些ID中筛选出在metroLineHashMap中存在的地铁线路ID,并将其映射为对应的地铁线路对象。
                    将得到的地铁线路对象列表设置为当前地铁站点的所属线路信息。
                    */
                    currentMetroStation.setLines(currentMetroStation.getLineIds().stream()
                            .filter(lineId -> metroLineHashMap.get(lineId) != null)
                            .map(metroLineHashMap::get)
                            .collect(Collectors.toList()));
                    //将当前地铁站点的ID和信息添加到metroStationHashMap中,以便在之后的处理中可以根据ID快速检索到对应的地铁站点对象
                    metroStationHashMap.put(currentMetroStation.getStationId(), currentMetroStation);
                }
            }
        }
        //将加载好的整个地铁站点图(metroStationGraph)与其所属的系统ID关联起来,并存储到allMetroStationGraphs中。
        //这样就可以使用系统ID来快速检索到对应的地铁站点图。
        allMetroStationGraphs.put(metroSystem.getSystemId(), metroStationGraph);
        //将使用Dijkstra算法初始化的最短路径搜索实例(dijkstraAlgMetroSearch)与其所属的系统ID关联起来,
        //并存储到allDijkstraAlgMetroSearch中。这样就可以使用系统ID来快速检索到对应的最短路径搜索算法实例。
        allDijkstraAlgMetroSearch.put(metroSystem.getSystemId(), dijkstraAlgMetroSearch);
        //将加载的地铁线路信息(metroLineHashMap)与其所属的系统ID关联起来,并存储到allMetroLineHashMaps中。
        //这样就可以使用系统ID来快速检索到对应的地铁线路信息。
        allMetroLineHashMaps.put(metroSystem.getSystemId(), metroLineHashMap);
        //将加载的地铁站点信息(metroStationHashMap)与其所属的系统ID关联起来,并存储到allMetroStationHashMaps中。
        //这样就可以使用系统ID来快速检索到对应的地铁站点信息。
        allMetroStationHashMaps.put(metroSystem.getSystemId(), metroStationHashMap);
        return "Success";
    }
    return "Already Exists";
}

使用mybatis查询数据库中二进制json格式的数据 查询结果为空

目前 认为错误原因是 没有将json格式的数据转化为实体类的方法

标签:metroLineHashMap,5.6,地铁站,metroStationGraph,线路,currentMetroStation,ID
From: https://www.cnblogs.com/258-333/p/18176218

相关文章

  • 2024.5.6 近期练习
    P3354[IOI2005]Riv河流如果我们设\(f_{u,j}\)表示子树\(u\)内放了\(j\)个伐木场的答案,发现很难转移。我们多加状态,设\(f_{u,i,j}\)表示子树\(u\)放了\(j\)个伐木场,木材全部运到\(i\)去最小代价。\(i\)是\(j\)祖先。继续设\(g_{u,i,j}\)表示\(u\)建了伐......
  • 云原生周刊:Terraform 1.8 发布 | 2024.5.6
    开源项目推荐xlskubectl用于控制Kubernetes集群的电子表格。xlskubectl将GoogleSpreadsheet与Kubernetes集成。你可以通过用于跟踪费用的同一电子表格来管理集群。git-syncgit-sync是一个简单的命令,它将git存储库拉入本地目录,等待一段时间,然后重复。当远程存储库......
  • 5.6
    偶然看到了一个人的博客发现这个人和我很像当然这是指部分精神状态他写的一些博客很能引起我的共鸣在这放一篇我觉得和我现在很像的https://www.luogu.com/article/aowfixj3但是呢他很幸运有树洞,有学长,有朋友,有npy,有着自己的兴趣爱好,OI也挺强的我连他的百分之一都不到吧......
  • 腾讯公益赛个人冲刺博客10(2024.5.6)
    今天测试多人联机整体效果    ......
  • 腾讯公益赛团队博客10(2024.5.6)
    未完成在线医生、聊天室功能进行中在多人手机端测试程序的可行性已完成sos、帮扶基本功能、登录注册、主页  ......
  • centos 7 下完全卸载 mysql 5.6
    centos下完全卸载mysql5.6 1查看已经安装的服务rpm-qa|grep-imysql-i作用是不区分大小写mysql-community-common-5.6.51-2.el7.x86_64mysql-community-libs-5.6.51-2.el7.x86_64mysql-community-server-5.6.51-2.el7.x86_64mysql-community-release-el7-5.noarchmy......
  • 光影魔术手 v4.5.6.208 绿色便携版
    更新流水:2024.04.27:跟进官方4.5.6.208,第一版修改内容:by.星罗月兔&DxFans&haiyang457去校验(方案来自@星罗月兔),去更新,去多余组件及无用菜单;便携版集成新版启动器,简化了诸多文件存在,看起来更清爽;单文件版方案来自@haiyang457,特此感谢!下载地址:https://down.neoimaging......
  • Alibaba Cloud Linux 3.2104 LTS 安装php-5.6.12
    1把php安装包上传到服务器2安装php所需要的扩展yum-yinstalllibxml2libxml2-developensslopenssl-develbzip2bzip2-develcurlcurl-devellibjpeglibjpeg-devellibpnglibpng-develfreetypefreetype-devellibmcryptlibmcrypt-develgdgd-devel3安装......
  • 吴恩达2022机器学习专项课程(一) 5.5 特征缩放1 & 5.6 特征缩放2
    问题预览/关键词什么是特征缩放?作用是什么?特征尺度和参数w权重的关系是?算法为什么要调节w权重?不进行特征缩放对梯度下降的影响?有特征缩放对梯度下降的影响?实现特征缩放的三种方法是?如何实现最大值缩放?如何实现均值归一化?如何实现Z-score标准化?判断缩放成功的标准是?什么情况......
  • Adobe Photoshop 2024 v25.6 (macOS, Windows) - 照片和设计软件
    AdobePhotoshop2024v25.6(macOS,Windows)-照片和设计软件Acrobat、AfterEffects、Animate、Audition、Bridge、CharacterAnimator、Dimension、Dreamweaver、Illustrator、InCopy、InDesign、LightroomClassic、MediaEncoder、Photoshop、PremierePro、AdobeXD请......