2015-07-28 3 views
-1

Я пытаюсь показать значения внутри HashMap, который имеет тип Object []. Я попытался использовать toString/deepToString/asList, но он все еще показывает значения в форме @ 60e1e567.Object Array в значении HashMap

Как я могу отобразить все значения?

public class Hotels { 

    public static void main(String[] args) { 

     Map<Integer,HotelInfo[]> hotel = new HashMap<Integer,HotelInfo[]>(); 

     HotelInfo[] hinfo = new HotelInfo[10]; 

     Integer key = new Integer(4); 
     Integer key1 = new Integer(5); 

     hinfo[0] = new HotelInfo(); 
     hinfo[0].setHotelName("Mariott"); 
     hinfo[0].setAddress("Gurgaon, near Huda City Center"); 



     hinfo[1] = new HotelInfo(); 
     hinfo[1].setHotelName("Hyatt"); 
     hinfo[1].setAddress("New Delhi, near Airport"); 

     hotel.put(key1, hinfo); 

     HotelInfo[] hinfo1 = new HotelInfo[10]; 

     hinfo1[0] = new HotelInfo(); 
     hinfo1[0].setHotelName("Grand"); 
     hinfo1[0].setAddress("Delhi, near Huda City Center"); 


     hinfo1[1] = new HotelInfo(); 
     hinfo1[1].setHotelName("ITC"); 
     hinfo1[1].setAddress("New Delhi, Nehru Place"); 

     hotel.put(key, hinfo); 
     // TODO Auto-generated method stub 

     Iterator<Integer> keyIterator = hotel.keySet().iterator(); 
     while(keyIterator.hasNext()){ 

      Integer aKey = keyIterator.next(); 
      HotelInfo[] aValue = hotel.get(aKey); 
      System.out.println("Key : " + aKey); 
      for(int i=0;i<aValue.length;i++) 
      { 
       System.out.println(Arrays.asList(aValue[i])); 
      } 
     } 

     //HotelInfo[] value1 = hotel.get(5); 
     //System.out.println(value1); 

    } 

} 

ответ

2

Если вы просто хотите, чтобы напечатать объект как String (который я не верю, что вы хотите), а затем реализовать toString(). IDE также может сгенерировать его для вас.

@Override 
    public String toString() { 
     return "HotelInfo [hotelName=" + hotelName + ", address=" + address 
       + "]"; 
    } 

и в изменении этого

for(int i=0;i<aValue.length;i++) 
{ 
     System.out.println(Arrays.asList(aValue[i]).toString()); 
} 

петли Поскольку вы поле в HotelInfo имеет типа String вы получаете просто использовать их слишком Forexample

for(int i=0;i<aValue.length;i++) 
{ 
     HotelInfo hotelInfo = aValue[i]; 
     if(hotelInfo!=null){ 
       System.out.println(hotelInfo.getHotelName()); 
       System.out.println(hotelInfo.getAddress());  
     } 
    } 
3

Вы должны реализовать toString() методы в HotelInfo классе, чтобы отобразить внутренние данные, как вы хотите их представляли.

+0

Спасибо .. это работает .. – mikelee

0

Вы должны переопределить метод toString() в классе HotelInfo.

@Override 
    public String toString() { 
     StringBuilder stringBuilder = new StringBuilder(); 
     stringBuilder.append("HotelInfo [hotelname="); 
     stringBuilder.append(hotelname); 
     stringBuilder.append(", address="); 
     stringBuilder.append(address); 
     stringBuilder.append("]"); 
     return stringBuilder.toString(); 
    }