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

相关推荐
天天爱吃肉821811 分钟前
豆包 vs DeepSeek API 对比分析报告
android·java·大数据·开发语言·功能测试·嵌入式硬件·汽车
柏舟飞流12 分钟前
Spring Boot + Spring Security + RBAC:从登录鉴权到权限模型设计
java·spring boot·spring
AC赳赳老秦17 分钟前
OpenClaw + 飞书多维表格:自动同步数据、生成统计图表、触发自动化任务
java·大数据·python·缓存·自动化·deepseek·openclaw
北域码匠22 分钟前
奇偶归并排序:并行计算的排序利器
数据结构·算法·c#·排序算法
CS_SKILL28 分钟前
吉比特 C++ 实习一面面经:一轮把 C++、容器、并发、排序和网络全扫了一遍
java·开发语言·校招面经·实习面经·技术面经·吉比特校招
玖玥拾35 分钟前
C/C++ 数据结构(五)链表的应用、对象池
c语言·数据结构·c++·链表·对象池·双向链表
2601_9618451544 分钟前
花生十三网课网盘|百度网盘|下载
数据结构·算法·链表·贪心算法·排序算法·线性回归·动态规划
Jul1en_1 小时前
【SpringCloud】SkyWalking 链路追踪知识详解及部署教程
java·后端·spring·spring cloud·skywalking
宸津-代码粉碎机1 小时前
Spring AI 企业级实战|智能记忆摘要+自动遗忘机制落地,彻底解决上下文爆炸与Token冗余
java·大数据·人工智能·后端·python·spring·云计算
逻极1 小时前
Spring Boot 微服务开发提速:我们如何将接口响应时间降低60%
java·spring boot·微服务·性能优化·自动配置