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

相关推荐
霸道流氓气质6 分钟前
ApiPost 中配置自动获取 Token 并调用业务接口完整指南
java·服务器·数据库
独隅26 分钟前
IntelliJ IDEA 接入多种AI大模型插件终极指南(2026.1 企业合规版)
java·人工智能·intellij-idea
还是奇怪1 小时前
Simon Willison 用 DSPy 优化 Datasette Agent 提示词:提示工程正在变成可测试的软件工程
java·开发语言·软件工程
zfoo-framework1 小时前
1.ansible安装 2.虚拟机克隆
java
码上解惑1 小时前
从 Dify 工作流说起:常用节点怎么选、怎样组合?
java·人工智能·ai·agent·dify·智能体·spring ai
青山木2 小时前
Hot 100 --- 岛屿数量
java·数据结构·算法·leetcode·深度优先·广度优先
不会就选b3 小时前
算法日常・每日刷题--<归并排序>1
数据结构·算法
程序员-珍3 小时前
报错下载android sdk失败
android·java
糖果店的幽灵3 小时前
langgraph分支之 - 动态分支(Dynamic Branch)
java·前端·javascript·人工智能·langgraph
危桥带雨3 小时前
排序算法(快排、归并、计数、基数排序)
数据结构·算法·排序算法