替代哈希映射

时间:2015-08-30 13:56:09

标签: java

我有一组“Part”类型的对象,每个Part都与数量相关联(一个字段,指定该特定部分所需的单位数)。是否存在java存储此数据的方式,除了哈希映射

3 个答案:

答案 0 :(得分:1)

您可以编写一个包含两个字段的包装对象:Part和quantity:

public class PartWithQuantity 
{
   private Part part;
   private int quantity;

   public int getQuantity() { return quantity; }
   public void setQuantity(int q) { quantity = q; }

   public Part getPart() { return part; }
   public void setPart(Part p) { part = p; }
}

如果担心HashMap可能使用太多内存,您也可以使用TreeMap。

答案 1 :(得分:0)

只需将元数据存储到arraylist即可轻松完成。 您可以使用包含一个部件类型引用的类,而其他(数量)是int类型。然后你甚至可以将这个新类的实例存储到一个arraylist中。请记住,您可以通过调用该对象随时从此arraylist访问您的信息。

答案 2 :(得分:0)

实现此目标的最简单方法是修改Part类并添加quantity字段及其setter和getter。

另一种选择是使用包装器对象并将其存储在Set中。 我创建了一个名为check()的便捷方法,可以轻松识别感兴趣的Part

public class PartExtended {
    private Part part;
    private int quantity;
    public PartExtended(Part part, int quantity) {
        this.part = part;
        this.quantity = quantity;
    }
    public boolean check(Part part) {
        return part.equals(this.part);
    }
    public Part getPart() {
        return part;
    }
    public int getQuantity() {
        return quantity;
    }
}

要检索Part' quantity,请使用for循环:

Set<PartExtended> data = new HashSet<>();
data.add(new PartExtended(new Part(), 0));

for (PartExtended item : data) {
    if (item.check(new Part())) {
        int quantity = item.getQuantity();
    }
}