一 java8案例代码
1.1 代码
public class TestA { public static void main(String[] args) { List<AssistantResponse> assistantResponseList = new ArrayList<>(); AssistantResponse assistantResponse1 = new AssistantResponse(); assistantResponse1.setRepositoryId("123"); AssistantResponse assistantResponse2 = new AssistantResponse(); assistantResponse2.setRepositoryId("145,456,789"); assistantResponseList.add(assistantResponse1); assistantResponseList.add(assistantResponse2); Map<Integer, RepositoryConfigPo> resultMap = new HashMap<>(); RepositoryConfigPo repositoryConfigPo1 = new RepositoryConfigPo(); repositoryConfigPo1.setRepositoryName("中"); resultMap.put(123, repositoryConfigPo1); RepositoryConfigPo repositoryConfigPo2 = new RepositoryConfigPo(); repositoryConfigPo2.setRepositoryName("国"); resultMap.put(456, repositoryConfigPo2); RepositoryConfigPo repositoryConfigPo3 = new RepositoryConfigPo(); repositoryConfigPo3.setRepositoryName("人"); resultMap.put(789, repositoryConfigPo3); RepositoryConfigPo repositoryConfigPo4 = new RepositoryConfigPo(); repositoryConfigPo4.setRepositoryName("万"); resultMap.put(145, repositoryConfigPo4); for (AssistantResponse assistantResponse : assistantResponseList) { String repository = assistantResponse.getRepositoryId(); if (org.springframework.util.StringUtils.hasText(repository)) { List<String> cnNames = new ArrayList<>(); // 使用三元运算符决定是分割还是作为单个元素 String[] idArray = repository.contains(",") ? repository.split(",") : new String[]{repository}; // 开始 Stream 流式处理 Arrays.stream(idArray) // 1. 解析: 按逗号分割字符串 .map(String::trim) // 2. 清洗: 去除每个元素的首尾空格 .filter(id -> !id.isEmpty()) // 2. 清洗: 过滤掉空字符串 .map(Integer::parseInt) // 3. 转换: 将字符串转换为 Integer .map(resultMap::get) // 4. 查找: 从 resultMap 中获取对应的对象 .filter(Objects::nonNull) // 5. 过滤: 过滤掉 null 值 .map(RepositoryConfigPo::getRepositoryName) // 6. 提取: 获取 repositoryName .forEach(cnNames::add); // 7. 收集: 添加到 cnNames 列表中 // 将 cnNames 列表用逗号连接成字符串,并设置回对象 assistantResponse.setKnowledgeRepositoryName(String.join(",", cnNames)); } } assistantResponseList.stream().forEach(x -> { System.out.println("x:" + x.getKnowledgeRepositoryName()); }); }
1.2 执行结果
![]()