我在从hashmap获取价值方面遇到问题
Map<String, Object> mapObj = new HashMap<String, Object>();
String[] strArray = {"String1", "String2"};
mapObj.put("string_array",strArray);
//trying to print:
for (String entry : mapObj.keySet()) {
Log.v("", "map entry "+ entry);
Log.v("", "map value "+ mapObj.get(entry));
}
实际输出:[Ljava.lang.String; @ 410ee550
expect:String1 String2
答案 0 :(得分:0)
您正在获取数组对象。您应该迭代该对象以获取其中的元素。
for (String entry : mapObj.keySet()) {
String[] arr = (String[]) mapObj.get(entry);
for (String string : arr) {
System.out.println(string);
}
}}
答案 1 :(得分:0)
你需要在这里进行类型转换
for (String entry : mapObj.keySet()) {
Log.v("", "map entry "+ entry);
Log.v("", "map value "+ mapObj.get(entry));
String[] strArray = (String[])mapObj.get(entry);
//now iterate strArray
}
答案 2 :(得分:0)
由于您已将String[]
添加到地图中,因此您将从地图中获得String[]
。
因此,您需要转换检索到的对象。
(String[])mapObj.get(entry);
您的实际输出明确表明地图返回String[]
。有关[Ljava.lang.String;
由于String []不会覆盖toString(),因此您需要获取数组中的每个元素,如:
String[] arr = (String[])mapObj.get(entry);
for(String eachString: arr){
System.out.print(eachString);
}
答案 3 :(得分:0)
为简单起见,您可以使用Arrays.toString方法
public class MapValue {
public static void main(String[] args) {
Map<String, Object> mapObj = new HashMap<String, Object>();
String[] strArray = {"String1", "String2"};
mapObj.put("string_array",strArray);
//trying to print:
for (String entry : mapObj.keySet()) {
Log.v("", "map entry "+ entry);
Log.v("", "map value "+ Arrays.toString((Object[]) mapObj.get(entry)));
}
}
}