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 <[email protected]>
AuthorDate: Mon Jul 29 14:39:49 2024 +0800

    use Map to avoid traversing List repeatedly (#16365)
    
    Co-authored-by: 石巧生(11032293) <[email protected]>
    Co-authored-by: xiangzihao <[email protected]>
---
 .../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);

Reply via email to