循环Java嵌套映射字符串数组循环可选<map<String,map<String,String[]>>
我有一个对象Optional<Map<String,Map<String,String[]>>>
如何循环数组中的每个字符串
下面的代码我希望“application”是“String”,但它给了我“String[]”
Optional<Map<String,Map<String,String[]>>> myObject = Optional.of(yamlReader.read(name, HashMap.class));
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();
//I am expecting "application" to be String here but it is an array of Strings for some reason
for (String[] application: v.values()) {
System.out.println(application + " " + x.getKey());
}
# 1 楼答案
您需要遍历
String[]
以获得单个值你可能需要用你现在使用的结构来验证给定的需求
# 2 楼答案
它是一个字符串数组,因为
v.values()
是集合<;字符串[]>;,不仅仅是绳子。如果只想打印字符串,则需要将其展平所以,如果您的最终目标是打印集合中可用的所有字符串,那么可以使用以下代码
或者,如果你想调整你的代码,可以做如下的事情来替换你的for last循环
或者