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
类中的 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
中的方法
return getClass().getName() + "@" + Integer.toHexString(hashCode());
从上面的类创建新的 Car
的方法是调用以下构造函数:
Car c = new Car("Ford");
第 2 步:使用循环进行迭代。
使用Map
时,您可以选择迭代键、值或条目。所有这三个选项都会返回某种Collection
。 集合
可以使用各种类型的循环进行迭代。
// 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);
如果您想要 map 的键(“Ford”、“Volvo”),您可以将 values()
调用替换为对 keySet()
的调用>。对于条目,调用方法 entrySet()
,该方法返回一个 Map.Entry
对象,您可以在其中获取两个 key (通过 getKey()
以及通过 getValue()
获得的值)。
关于java - 如何从 hashmap 返回对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27864814/