我对此有些麻烦。我想将成员变量添加到地图。

这是我的代码:

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();

09-25 21:05