访问类及其元素中的Hashtable,Java

时间:2013-04-17 02:33:18

标签: java class object hashtable

我有一个“Item”类,其中包含以下内容......

public class Item{

    private String barcode;

    private String productName;

    private int quantity;

}

我还有一个名为“Store”的类,其中包含我的HashTable ......

public class Store implements Serializable{

Hashtable<String, Item> store = new Hashtable<String, Item>();

}

字符串与条形码相同,并且是HashTable中项目对象的“键”。

现在,在我的主要内容中,我尝试创建这些类对象的实例,并使用put()方法将项目存储在Hashtable中,但我似乎无法访问它。我想将项目添加到Hashtable中,如果它发现该项目已经存在,则会增加项目数量值。

我对HashTables没有经验,有人可以帮忙吗?

编辑:

我的主要代码...

Store store = new Store();

    Item item1 = new Item();
    item1.setProductName("Paper Towel Roll");
    item1.setBarCode("111222333444");
    item1.setQuantity(1);

    store.put("111222333444", item1);

2 个答案:

答案 0 :(得分:1)

尝试这样:

public class Store implements Serializable{
 public Hashtable<String, Item> itemsTable = new Hashtable<String, Item>();
}

主要是:

Store store = new Store();

Item item1 = new Item();
item1.setProductName("Paper Towel Roll");
item1.setBarCode("111222333444");
item1.setQuantity(1);

store.itemsTable.put("111222333444", item1);

答案 1 :(得分:1)

添加公开,以便您可以从包中访问它。它在“package-private”中,因为没有指定修饰符。

public class Store implements Serializable{

    private Hashtable<String, Item> items = new Hashtable<String, Item>();

    // Getter and setter for items hashtable

}

主要代码:

Store store = new Store();

Item item1 = new Item();
item1.setProductName("Paper Towel Roll");
item1.setBarCode("111222333444");
item1.setQuantity(1);

// NOTE: getItems() is the getter for the store object. 
// Don't expose it as public. Bad encapsulation

store.getItems().put(item1.getBarCode(), item1); 

注意:最好避免使用Hashtable和使用HashMap