2017-06-11 4 views
0

Ich versuche, Instanzen der class product zu erstellen, die eine eindeutige ID (ID) haben.So legen Sie die eindeutige ID für Instanzen fest

Die ID verhält sich wie der Barcode auf den Produkten in einem Geschäft, und der Benutzer kann die ID nach dem Hinzufügen eines Produkts ändern.

Dies ist, was ich bisher:

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... 
    } 

ich der Schaffung einer Klasse dachte, dass alle erstellten Produkte so etwas wie dieses beinhalten:

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); 
     } 
    } 

} 

so bin ich nicht sicher wie es funktioniert, oder ob die class Inventory eine gute Idee ist.

btw: sorry für schlechtes Englisch, kein Muttersprachler

+0

Möglicherweise können Sie eine Methode hinzufügen, die eine Instanz von 'Product' zu einer Instanz von' Inventory' hinzufügt. Diese Methode würde im Konstruktor von 'Product' aufgerufen werden. Ich rate dir, ein 'getter()' in der Klasse 'Product' zu schreiben, wenn es noch nicht fertig ist. – Badda

+0

danke. @Badda ja, ich habe schon einen getter gemacht. –

Antwort

0

Sie können die Inventory Klasse ändern, wie eine Datenstruktur zu halten, unter

HashMap<Integer, Product> products; 

es im Konstruktor initialisieren, und dann können Sie products.contains(<int id>) nennen . Sie müssen dieser Datenstruktur ein neues Produkt hinzufügen.

Für die korrekte und effiziente Verwendung von HashMap, müssten Sie auch über das Überschreiben equals() und hashcode() Methode lesen. HashMap gibt Ihnen O (1) Insertion und O (1) Lookup.

+0

HashMap, ich weiß nicht, wie man es benutzt, aber ich habe davon gehört. Danke, ich werde meine Nachforschungen anstellen. :) –

Verwandte Themen