【问题标题】:Iterate throught map that has following structure遍历具有以下结构的地图
【发布时间】:2014-03-28 18:58:50
【问题描述】:

所以,问题是我有以下对象Map<String, List<String>> 一些函数在这个结构中返回了信息,所以输出,当我执行这个 sn-p

for (Map.Entry<String, List<String>> entry : map.entrySet()) 
{
System.out.println("Key : " + entry.getKey() + " ,Value : " + entry.getValue());
}

对应的输出看起来像

Key: Somekey1
Value: Somevalue1
Key: Somekey2
Vaue: Somevalue2, Somevalue3
Key: foobar
Value: foo, foo1, ..., foon

因此,如您所见,没有办法绕过所有需要的元素,因为我只需要将带有 foobar 键的每个值都表示为 String[]

最终的事情是,根据javadoc,如果需要foobar键的值,最后我会得到foon

String fookey = conn.getHeaderField("foobar");

    if (fookey == null) {
        System.out.println("Key 'foobar' is not found!");
    } else {
        System.out.println("foobar: " + fooval);
    }

我输出中的这段代码有foo1

有人可以提出代码的工作 sn-p,或者如何解决这个问题的想法吗?

更新。

现在找到了解决方案。如果您知道如何改进,请随时改进。 试图为其他人维护代码可复制粘贴。

StringBuilder sb = new StringBuilder();
String strArray = {""};
for(Map.Entry<String, List<String>> entry: map.entrySet()){
if(map.containsKey("foobar")){
List list = entry.getValue();
strArray = (String[])list.toArray(new String[list.size()]);
}
} 
for(String str : strArray){sb.append(str + newline);}
String fooarr = sb.toString();

【问题讨论】:

    标签: java map key-value


    【解决方案1】:

    不确定我是否遵循,但如果您只想要带有键 foobar 的值

    if(map.containsKey("foobar"))
    {
        String[] theValsAsArray = map.get("foobar").toArray()
    }
    

    【讨论】:

    • 对不起,不能投票。感谢您的建议,但您的“原样”解决方案并没有解决问题。查看我的更新以了解解决方案。
    【解决方案2】:

    entry.getValue() 给你一个List&lt;String&gt;

    如果你希望他们成为String[],你可以这样做:

    List list = entry.getValue();
    
    String[] strArray = list.toArray(new String[list.size()]);
    

    【讨论】:

    • 对不起,不能投票。感谢您的建议,但您的“原样”解决方案并没有解决问题。查看我的更新以了解解决方案。
    • 没问题,基本上list.toArray(new String[list.size()]); 就是您要找的。很高兴帮忙。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-12-22
    • 2011-03-23
    相关资源
    最近更新 更多