所以,我有这个课程:
public class Product {
private String name, id, info ;
private int quantity;
public Product(String newName, String newID, String newInfo, Integer newQuantity){
setName(newName);
setID(newID);
setPrice(newInfo);
setQuantity(newQuantity);}
public void setName(String name) {
this.name = name; }
public void setID(String id) {
this.id = id; }
public void setPrice(String info) {
this.info = info; }
public void setQuantity(Integer quantity) {
this.quantity = quantity; }
public String getID( ) {
return id; }
public String getName( ) {
return name; }
public String getInfo( ) {
return info; }
public int getQuantity( ) {
return quantity; }
在另一堂课中我有这个:
public class Invoice implements Group<Product> {
private HashMap<String, Product> prod = new HashMap<String, Product>( );
public Invoice(){ }
public void addProd(Product a) {
prod.put(??getID()??,new Product(??));
}
}
如果这些数据是用户生成的而不是我,我会使用getID()
方法吗?
所以在我的班级发票中,我如何使用方法getID()
,以便我可以在HashMap中的键值参数中使用它?还有一种方法可以在不创建新类的情况下向hashmap添加3个值(name info quan)吗?
答案 0 :(得分:4)
我看到您使用参考Product
方法获得a
个参考作为addProd
方法的参数。
只需使用a.getID()即可获得id。它应该看起来像:
public void addProd(Product a) {
prod.put(a.getID(),a);
}
我不明白你问题的第二部分..我认为你的Product对象中已经有3个值,你把Product对象放到Map中,那你为什么还需要另一种方法呢?
答案 1 :(得分:0)
您的类Product无法编译,因为您的构造函数中有Item名称。构造函数名称必须与类名匹配。所以将其改为Product。这同样适用于Invoice vs ShoppingCart。构造函数和类名必须匹配。
根据您的评论,您希望向地图添加四个产品值。关键是产品本身的价值之一。试试这个:
Product p = new Product(name, id, info, quantity);
cart.addProd(p);
...
public void addProd(Product p) {
prod.put(p.getId(), p);
}
地图只能将单个值映射到单个键,因此您必须为要整理为一个值的值设置某种容器。这可以是对象(产品),也可以使用集合(例如List)。我强烈推荐前者。
答案 2 :(得分:0)
关于在地图中放置3个值的问题,我认为没有办法在不创建类的情况下将3个值放入一个键中。另一种方法是存储Map<String, List<String>>
,假设您的3个值是String类型,或Map<String, Map<String, String>>
。