You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@dolphinscheduler.apache.org by ca...@apache.org on 2024/07/29 06:39:54 UTC

(dolphinscheduler) branch dev updated: use Map to avoid traversing List repeatedly (#16365)

This is an automated email from the ASF dual-hosted git repository.

caishunfeng pushed a commit to branch dev
in repository https://gitbox.apache.org/repos/asf/dolphinscheduler.git


The following commit(s) were added to refs/heads/dev by this push:
     new 666201dbcc use Map to avoid traversing List repeatedly (#16365)
666201dbcc is described below

commit 666201dbccabb1e5015ac7d9d53b940803f01a9a
Author: Kinson <ki...@whu.edu.cn>
AuthorDate: Mon Jul 29 14:39:49 2024 +0800

    use Map to avoid traversing List repeatedly (#16365)
    
    Co-authored-by: 石巧生(11032293) <ki...@vivo.com>
    Co-authored-by: xiangzihao <46...@qq.com>
---
 .../api/service/impl/ProjectServiceImpl.java                 | 12 ++++++------
 1 file changed, 6 insertions(+), 6 deletions(-)

diff --git a/dolphinscheduler-api/src/main/java/org/apache/dolphinscheduler/api/service/impl/ProjectServiceImpl.java b/dolphinscheduler-api/src/main/java/org/apache/dolphinscheduler/api/service/impl/ProjectServiceImpl.java
index 3c623b7029..22093ccd7a 100644
--- a/dolphinscheduler-api/src/main/java/org/apache/dolphinscheduler/api/service/impl/ProjectServiceImpl.java
+++ b/dolphinscheduler-api/src/main/java/org/apache/dolphinscheduler/api/service/impl/ProjectServiceImpl.java
@@ -396,16 +396,16 @@ public class ProjectServiceImpl extends BaseServiceImpl implements ProjectServic
         }
         List<User> userList = userMapper.selectByIds(projectList.stream()
                 .map(Project::getUserId).distinct().collect(Collectors.toList()));
+        Map<Integer, String> userMap = userList.stream().collect(Collectors.toMap(User::getId, User::getUserName));
         List<ProjectProcessDefinitionCount> projectProcessDefinitionCountList =
                 processDefinitionMapper.queryProjectProcessDefinitionCountByProjectCodes(
                         projectList.stream().map(Project::getCode).distinct().collect(Collectors.toList()));
+        Map<Long, Integer> projectProcessDefinitionCountMap = projectProcessDefinitionCountList.stream()
+                .collect(Collectors.toMap(ProjectProcessDefinitionCount::getProjectCode,
+                        ProjectProcessDefinitionCount::getCount));
         for (Project project : projectList) {
-            project.setUserName(userList.stream().filter(user -> user.getId().equals(project.getUserId()))
-                    .findFirst().map(User::getUserName).orElse(null));
-            project.setDefCount(projectProcessDefinitionCountList.stream()
-                    .filter(projectProcessDefinitionCount -> projectProcessDefinitionCount.getProjectCode()
-                            .equals(project.getCode()))
-                    .findFirst().map(ProjectProcessDefinitionCount::getCount).orElse(0));
+            project.setUserName(userMap.get(project.getUserId()));
+            project.setDefCount(projectProcessDefinitionCountMap.getOrDefault(project.getCode(), 0));
         }
         pageInfo.setTotal((int) projectIPage.getTotal());
         pageInfo.setTotalList(projectList);