You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何遍历Optional<Map<String,Map<String,String[]>>>中数组的每个String元素

问题原因

你当前定义的第二层循环遍历对象是Map<String, String[]>的values()集合,该集合存储的元素本身就是String[]字符串数组类型,因此自然无法直接得到单个String类型的application变量,需要额外增加一层循环遍历数组内的单个元素。

修正后代码
Optional<Map<String,Map<String,String[]>>> myObject =  Optional.of(yamlReader.read(name, HashMap.class));

// 先判断Optional非空再操作,避免直接get()抛出异常
if (myObject.isPresent()) {
    Set<Map.Entry<String, Map<String, String[]>>> abc = myObject.get().entrySet();
    for (Map.Entry<String, Map<String, String[]>> x : abc) {
        Map<String, String[]> v = x.getValue();
        // 第一层遍历拿到String数组
        for (String[] appArray : v.values()) {
            // 新增第二层遍历,拿到数组内单个String元素
            for (String application : appArray) {
                System.out.println(application + " " + x.getKey());
            }
        }
    }
}
补充说明
  • 不要直接调用Optional.get(),如果Optional为空会抛出NoSuchElementException,优先使用ifPresent、orElse等方法处理空场景
  • 如果还需要获取第二层Map的key(也就是内层Map的String类型键),可以调整遍历逻辑遍历内层Map的entrySet()而非values()

内容的提问来源于stack exchange,提问作者RocksAB

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.02 21:54:03