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());
}
}
我正在尝试显示 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());
}
}