如何返回HashMap对象字段

时间:2015-03-13 16:48:01

标签: java object hashmap

我目前在Holiday类中有以下HashMap。

假日课程:

HashMap <String, Location> holidays = new HashMap<String, Location>();

这将创建Location类的实例,以允许显示更多字段。

位置等级:

public class Location {
private String locationName;
private String locationDesc;
private double price;
private int quantity;

public Location(String locationName, String locationDesc, double price) {
    this.locationName = locationName;
    this.locationDesc = locationDesc;
    this.price = price; 
    quantity = 0;
}

public String toString() {
    return (locationName + " | " + "£" + price);
}
public double getPrice() { return price; }
public String getLocationName() { return locationName; }
public String getLocationDesc() { return locationDesc; }
public int getQuantity() { return quantity; }
}

在我的GUI类中,我只使用.get HashMap方法,这将返回toString。 例如

GUI类

private Holiday holiday;
...
return holiday.holidays.get(--HashMap key here--);

这将返回toString,即locationName和price。

然而。我还希望在其他地方打印出HashMap,但返回不同的字段。例如返回描述和数量以及locationName和price。我该怎么做呢?或者我如何从Location类返回单个字段,该类是HashMap中的一个实例。

管理这个。但需要帮助以下


第二次编辑:

我的位置类中有一个设定数量的方法,用于设置每个假期的预订量。但是在使用时;

for (Location location : holiday.holidays.values()) {
location.setQuantity(Integer.parseInt(textFieldQuantity.getText()));
}

当使用不同的数量设置每个位置时,这会将所有假期更改为相同的数量。我该如何解决这个问题?

3 个答案:

答案 0 :(得分:2)

holidays.get(key)的结果应该是Location类型的对象。如果您直接打印对象,就像System.out.println(holidays.get(key))一样,它会打印toString()的结果。但由于您已拥有对象并可访问其字段,因此您可以准确打印所需内容。

这样的事情应该有效:

Location location = holidays.get(key);
System.out.println(location.getlocationDesc() + " | " + location.getQuantity());

关于你的第二个问题:

如果您只需要打印存储在地图中的所有值,我认为直接迭代地图值会更清晰,更快:

for (Location location : holiday.holidays.values()) {
    System.out.println(location.getlocationDesc() + " | " + location.getQuantity());
}

第三个问题:

请注意,您的代码不会仅为一个位置设置数量。它遍历所有位置,将每个数量设置为相同的值,由textFieldQuantity.getText()定义。

如果您要修改特定位置,则需要使用get()从地图中检索它:

Location location = holiday.holidays.get(key);
location.setQuantity(Integer.parseInt(textFieldQuantity.getText()));

答案 1 :(得分:0)

为什么不尝试这样的事情:

private Location location = holiday.holidays.get(--HashMap key here--);

// Create a string with the variables

然后返回字符串。

答案 2 :(得分:0)

  

这将返回toString,即locationName和price

没有。它将返回Location的实例。所以你要做的就是

Location location = holiday.holidays.get("some key");
double price = location.getPrice();
String locationName = location.getLocationName();

请注意

  • 你不应该使用公共领域。所以它应该是location.getHolidays().get("some key")。或者更好的是,将地图封装起来并尊重“不要与陌生人交谈”#34;规则,location.getHoliday("some key")
  • 您的getter应命名为getLocationName()而不是getlocationName()以尊重JavaBean约定。或者甚至更好,因为此方法是Location类的一部分,位置前缀是多余的,因此您应该简单地将其命名为getName()(和getDescription()以获取描述)