HashMap 值中的对象数组

Object Array in value of HashMap

我正在尝试显示 Object[] 类型的 HashMap 中的值。 我尝试使用 toString/deepToString/asList 但它仍然以 @60e1e567.

的形式显示值

如何显示所有值?

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

    }

}

您应该在 HotelInfo class 中实现 toString() 方法,以按照您希望的方式显示内部数据。

您应该重写 HotelInfo 中的 toString() 方法 class。

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

如果您只想将对象打印为 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 类型,因此您也可以使用它们,例如

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