如何 return 来自 hashmap 的对象
how to return objects from hashmap
Car c1 = new Car();
Car c2 = new Car();
HashMap<String,Car> hm= new HashMap<String, Car>();
hm.put("Ford",c1);
hm.put("Volvo",c2);
如何迭代以仅获取要打印的值(仅名称)?
输出应该是:
c1
c2
不是下面的:
c1@13efr5t4
c2@234fvdf4
第 1 步: 首先,您必须覆盖 Car
class.
中的 toString()
方法
public class Car {
// attribute
private final String name;
// Constructor
public Car(final String name) {
this.name = name;
}
// getter
public String getName() {
return name;
}
// Override of toString
@Override
public String toString() {
return name;
}
}
如果您没有实现正确的 toString
方法,当您调用 System.out.println(car)
时将使用来自 Object
的方法,并且该实现 returns 以下(这是您在当前打印中看到的内容):
return getClass().getName() + "@" + Integer.toHexString(hashCode());
从上面的 class 创建新的 Car
的方法是调用以下构造函数:
Car c = new Car("Ford");
步骤 2:使用循环进行迭代。
使用 Map
时,您可以选择遍历 keys、values 或 entries.所有这三种选择 returns 某种 Collection
。 Collections
可以使用各种类型的循环进行迭代。
// Standard Java 5+ foreach-loop that prints the values
for (Car c : hm.values()) {
System.out.println(c);
}
// Loop using an iterator that prints the keys
for (Iterator<Car> itr = hm.keys().iterator(); itr.hasNext(); ) {
System.out.println(itr.next());
}
// Or a Java 8 loop
hm.values().forEach(System.out::println);
如果您想要地图的键 ("Ford"、"Volvo"),您可以将对 values()
的调用替换为对 keySet()
的调用。对于条目,调用方法 entrySet()
,其中 returns 一个 Map.Entry
对象,您可以在其中获取键(通过 getKey()
和通过 getValue()
获取值)。
没有return可以直接用
for (Car c : hm.values()) {
System.out.printf(c);}
HashMap<String,Car> hm= new HashMap<String, Car>();
hm.put("Ford",c1);
hm.put("Volvo",c2);
在您的哈希映射中,您放置的是对象而不是字符串。
当您将对象打印为字符串时,它正在给您输出
c1@13efr5t4
c2@234fvdf4
如果您想打印假设的汽车名称,请使用以下方式,或者您必须在 Car
中实施 toString()
方法,这将为您提供预期的输出。
for (Car c : hm.values()) {
System.out.println(c.getCarName());
}
Car c1 = new Car();
Car c2 = new Car();
HashMap<String,Car> hm= new HashMap<String, Car>();
hm.put("Ford",c1);
hm.put("Volvo",c2);
如何迭代以仅获取要打印的值(仅名称)?
输出应该是:
c1
c2
不是下面的:
c1@13efr5t4
c2@234fvdf4
第 1 步: 首先,您必须覆盖 Car
class.
toString()
方法
public class Car {
// attribute
private final String name;
// Constructor
public Car(final String name) {
this.name = name;
}
// getter
public String getName() {
return name;
}
// Override of toString
@Override
public String toString() {
return name;
}
}
如果您没有实现正确的 toString
方法,当您调用 System.out.println(car)
时将使用来自 Object
的方法,并且该实现 returns 以下(这是您在当前打印中看到的内容):
return getClass().getName() + "@" + Integer.toHexString(hashCode());
从上面的 class 创建新的 Car
的方法是调用以下构造函数:
Car c = new Car("Ford");
步骤 2:使用循环进行迭代。
使用 Map
时,您可以选择遍历 keys、values 或 entries.所有这三种选择 returns 某种 Collection
。 Collections
可以使用各种类型的循环进行迭代。
// Standard Java 5+ foreach-loop that prints the values
for (Car c : hm.values()) {
System.out.println(c);
}
// Loop using an iterator that prints the keys
for (Iterator<Car> itr = hm.keys().iterator(); itr.hasNext(); ) {
System.out.println(itr.next());
}
// Or a Java 8 loop
hm.values().forEach(System.out::println);
如果您想要地图的键 ("Ford"、"Volvo"),您可以将对 values()
的调用替换为对 keySet()
的调用。对于条目,调用方法 entrySet()
,其中 returns 一个 Map.Entry
对象,您可以在其中获取键(通过 getKey()
和通过 getValue()
获取值)。
没有return可以直接用
for (Car c : hm.values()) {
System.out.printf(c);}
HashMap<String,Car> hm= new HashMap<String, Car>();
hm.put("Ford",c1);
hm.put("Volvo",c2);
在您的哈希映射中,您放置的是对象而不是字符串。
当您将对象打印为字符串时,它正在给您输出
c1@13efr5t4
c2@234fvdf4
如果您想打印假设的汽车名称,请使用以下方式,或者您必须在 Car
中实施 toString()
方法,这将为您提供预期的输出。
for (Car c : hm.values()) {
System.out.println(c.getCarName());
}