java8案例对list[过滤、分组,转换,查找等]清洗逻辑

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

相关推荐
Java面试题总结6 小时前
java高频面试题(2026最新)
java·开发语言·jvm·数据库·spring·缓存
苦逼的猿宝7 小时前
学生心理咨询评估系统
java·毕业设计·springboot·计算机毕业设计
隔窗听雨眠7 小时前
doctype、charset、meta如何控制整个渲染流水线
java·服务器·前端
清木!7 小时前
排序算法比较
数据结构·算法·排序算法
西安邮电大学8 小时前
SpringBean完整生命周期
java·spring
刀法如飞8 小时前
DDD 与 Ontology 对比分析:哪一种更适合AI时代复杂系统构建?
java·架构·领域驱动设计
SunnyDays10118 小时前
Java 读写 Excel 公式:从基础到高级的实战总结
java·开发语言·excel
wb043072018 小时前
Java 26
java·开发语言
白露与泡影8 小时前
JVM GC调优实战:从线上频繁Full GC到RT降低80%的全过程
java·开发语言·jvm
范什么特西8 小时前
Spring 动态代理 静态代理
java·后端·spring