一 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 执行结果
