所以,问题是我有以下对象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();
答案 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()
}