【问题标题】:Object Array in value of HashMapHashMap 值中的对象数组
【发布时间】:2015-07-28 04:04:50
【问题描述】:

我正在尝试在 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);

    }

}

【问题讨论】:

    标签: java jakarta-ee dictionary collections hashmap


    【解决方案1】:

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

    【讨论】:

      【解决方案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());    
               }
        }
      

      【讨论】:

        【解决方案3】:

        您应该重写 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();
            }
        

        【讨论】:

          猜你喜欢
          • 2013-11-10
          • 1970-01-01
          • 2013-01-16
          • 2019-05-03
          • 2021-08-07
          • 1970-01-01
          • 2017-10-02
          • 2017-04-28
          • 1970-01-01
          相关资源
          最近更新 更多