对象数组的HashMap值

时间:2015-07-28 04:04:51

标签: java java-ee dictionary collections hashmap

我正在尝试在HashMap中显示Object []类型的值。 我尝试使用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);

    }

}

3 个答案:

答案 0 :(得分:3)

您应该在toString()类中实现HotelInfo方法,以显示您所代表的内部数据。

答案 1 :(得分: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类型,因此您也可以使用它们,例如

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

答案 2 :(得分:0)

你应该覆盖HotelInfo类中的toString()方法。

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