我对此有些麻烦。我想将成员变量添加到地图。
这是我的代码:
Sprinter.java
public class Sprinter {
private int age;
private String name;
private String address;
public Sprinter() {
}
public Sprinter(int age, String name, String address) {
this.age = age;
this.name = name;
this.address = address;
}
public void setAge(int age) {
return this.age = age;
}
public int getAge() {
return this.age;
}
public void setName(String name) {
return this.age = age;
}
public String getName() {
return this.name;
}
public void setAddress(String address) {
return this.address = address;
}
public String getAddress() {
return this.address;
}
Worker.java
Sprinter _s = new Sprinter();
_s.setAge(16);
_s.setName("Chris");
_s.setAddress("123 Street");
Map.java
public class Maper {
private Sprinter _sp = new Sprinter();
private static Map<String, Sprinter> map = new HashMap<String, Sprinter>();
public void printMap() {
map.put(_sp.getName(), _sp);
System.out.println(map);
我希望映射中的String是键,而值则是Sprinter类的age,address和name字段。在我的Worker.java类中,使用:
Maper _m = new Maper();
_m.printMap();
我的输出是:{“ Chris”,“ Chris”};
但是,我希望添加所有变量。有什么建议吗?
最佳答案
映射将单个键与单个值相关联-它明确地不能将单个键(“ Chris”)与三个不同值(16,“ Chris”,“ 123 Street”)相关联。您有两个明显的选择:
使用三个不同的键(例如"Chris_age"
-> 16
,"Chris_name"
-> "Chris"
,"Chris_address"
-> "123 Street"
)。由于值的类型不同(int与String),因此此选项更加复杂,因此您需要将地图声明为Map<String, Object>
,这通常不太好。插入代码如下所示:
map.put(_sp.getName() + "_name", _sp.getName());
map.put(_sp.getName() + "_age", _sp.getAge());
map.put(_sp.getName() + "_address", _sp.getAddress());
更好的选择是使用容器对象保存这三个值,并将其存储在地图中。那就是您已经拥有的代码。在这种情况下,如果您想要年龄,则需要执行以下操作:
map.get("Chris").getAge();