通过具有以下结构的地图迭代

时间:2014-03-27 17:15:26

标签: java map key-value

所以,问题是我有以下对象Map<String, List<String>> 某些函数已在此结构中返回信息,因此输出时,我执行此代码段

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,如果需要foon密钥的值,我最终会获得foobar

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

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

我的输出中的代码有foo1

有人可以提供代码的工作片段,或者想法如何解决这个问题?

UPD。

现在找到了解决方案。如果你知道怎么做,请随意改进它。 试图维护代码复制 - 可供其他人使用。

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();

2 个答案:

答案 0 :(得分:0)

entry.getValue()会返回List<String>

如果您希望它们为String[],您可以执行以下操作:

List list = entry.getValue();

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

答案 1 :(得分:0)

不确定我是否关注,但如果您只想要使用键foobar

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