2017-06-11 8 views
0

一意識別子(ID)を持つclass productのインスタンスを作成しようとしています。インスタンスに一意のIDを設定する方法

IDは店舗の商品のバーコードのように動作し、ユーザーは商品を追加した後にIDを変更することがあります。

これは私がこれまで持っているものです。

public class Product { 

    private int id; 
    //and some other attributes... 

    public Product (int id){ 
     this.id = id; 
    } 


    public void setId(){ 
     this.Id = id; 
    } 

    //more not relevant methods... 
    } 

私はすべて作成の製品にこのようなものが含まれますクラスを作成することを考えた:

public class Inventory{ 

    ArrayList<Product> products; 
    //not sure if I should use product array, or ID's array 

    public Producto createProduct(int id){ 
     if (products.contains(/* product with id*/)){ 
      // not sure what to use here 
     } 
     else{ 
      return new Producto(id); 
     } 
    } 

} 

ので、私はわからないんだけどどのように動作させるか、またはclass Inventoryが良い考えであるかどうかを確認してください。

ところで:悪い英語のため申し訳ありませんが、いないネイティブスピーカー

+0

「Inventory」のインスタンスに 'Product'のインスタンスを追加するメソッドを追加できます。このメソッドは 'Product'のコンストラクタで呼び出されます。まだ完了していなければ 'Product'クラスに' getter() 'を書くことをお勧めします。 – Badda

+0

ありがとうございます。 @Badda はい、私はすでにゲッターを作っています。 –

答えて

0

あなたは

HashMap<Integer, Product> products; 

以下のようなデータ構造を保持するためにInventoryクラスを変更することがあり、コンストラクタでそれを初期化し、その後、あなたはproducts.contains(<int id>)を呼び出すことができます。これに応じて、このデータ構造に新しい製品を追加する必要があります。

HashMapを正しく、効率的に使用するには、equals()hashcode()メソッドをオーバーライドする必要があります。 HashMapはO(1)の挿入とO(1)の検索を行います。

+0

HashMap、私はそれを使う方法を知らないが、私はそれについて聞いた。 ありがとう、私は私の研究をします。 :) –

関連する問題