我正在尝试创建一个具有String
密钥的hashmap,并存储一个Integer
数组。
使用hashmap.get()
时,我想检索存储的数组。
我以前用过以下代码:
HashMap hm = new HashMap();
String[] arr=new String[]{"-1","-1","-1","-1"};
hm.put("A", arr);
hm.put("B", arr);
hm.put("C", arr);
hm.put("E", arr);
Set set = hm.entrySet();
Iterator i = set.iterator();
while(i.hasNext())
{
Map.Entry me = (Map.Entry)i.next();
System.out.print(me.getKey() + ": ");
System.out.println(me.getValue());
}
我得到的输出是:
D: [Ljava.lang.String;@88d00c6
E: [Ljava.lang.String;@88d00c6
A: [Ljava.lang.String;@88d00c6
B: [Ljava.lang.String;@88d00c6
C: [Ljava.lang.String;@88d00c6
任何人都可以帮忙!!
答案 0 :(得分:3)
System.out.println(me.getValue());
每个值都是一个数组。当您打印时,默认情况下Object#toString()
方法调用并生成该十六进制字符串。
尝试使用Arrays类中的util方法来打印数组。
System.out.println(Arrays.toString(me.getValue()));
答案 1 :(得分:2)
使用Arrays.toString(me.getValue());
代替,数组对象toString()
的默认实现不会以漂亮的格式返回
答案 2 :(得分:1)
System.out.println
对数组使用默认的toString
方法,这很丑陋(有些人声称它是虚拟机中数组的内存地址)。而是使用实用程序功能或手动打印数组的内容。
while(i.hasNext())
{
Map.Entry me = (Map.Entry)i.next();
System.out.print(me.getKey() + ": ");
String[] value = (String[])me.getValue();
for(String str:value)
{
System.out.println(str+"\t");
}
System.out.println();
}