从Hashmap检索值的方法

时间:2014-04-15 12:09:33

标签: java

我在从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

4 个答案:

答案 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;

的说明,请参阅this

由于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)));
        }

    }

}