mengambil array dari hashmap

Saya mencoba membuat peta hash yang memiliki kunci String dan menyimpan array Integer. Saat menggunakan hashmap.get() , saya ingin mengambil array yang disimpan. Saya sudah terbiasa dengan kode berikut:

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

Output yang saya dapatkan adalah:

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

Adakah yang bisa tolong bantu!!


person Mohit    schedule 22.12.2013    source sumber
comment
Lihat metode Object#toString().   -  person Sotirios Delimanolis    schedule 22.12.2013


Jawaban (3)


System.out.println menggunakan metode toString default untuk array, yang jelek (beberapa orang mengklaim itu adalah alamat memori array di mesin virtual). Sebagai gantinya, gunakan fungsi utilitas atau cetak konten array secara manual.

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();
}
person Flight Odyssey    schedule 22.12.2013
comment
di String[] nilai = me.getValue(); itu memberikan kesalahan tidak dapat mengubah objek menjadi string - person Mohit; 23.12.2013
comment
@Mohit: Terima kasih telah menunjukkan hal itu, perbaiki sekarang. Saya hanya lupa melakukan cast. - person Flight Odyssey; 23.12.2013

 System.out.println(me.getValue());

Bahwa setiap nilai adalah Array. Saat Anda mencetak, secara default metode Object#toString() memanggil dan menghasilkan string hex itu.

Coba gunakan metode util dari kelas Array, untuk mencetak array.

System.out.println(Arrays.toString(me.getValue()));
person Suresh Atta    schedule 22.12.2013
comment
Saya sebenarnya harus mencetak data yang disimpan di hashmap... data yang saya ambil dari peta..Arrays.toString() tidak berfungsi untuk objek... me.getValue() adalah sebuah objek - person Mohit; 23.12.2013
comment
@Mohit Ketika saya mengatakan array itu berarti saya.getValue() :) - person Suresh Atta; 23.12.2013

gunakan Arrays.toString(me.getValue()); sebagai gantinya, implementasi default toString() Objek array tidak kembali dalam format yang cantik

person jmj    schedule 22.12.2013
comment
Arrays.toString() tidak berfungsi untuk objek... me.getValue() adalah sebuah objek - person Mohit; 23.12.2013
comment
@Mohit Anda bisa menggunakan obat generik sehingga Arrays.toString() akan menerima String[] - person jmj; 23.12.2013