2017-06-11 2 views
0

En essayant de créer des instances du class product qui ont un identifiant unique (ID). L'ID agira comme le code à barres sur les produits dans un magasin, et l'utilisateur peut changer l'ID après l'ajout d'un produit.comment définir un ID unique aux instances

C'est ce que j'ai jusqu'à présent:

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

Je pensais à la création d'une classe qui contiendra tous les produits créés quelque chose comme ceci:

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

} 

donc je ne suis pas sûr comment le faire fonctionner, ou si le class Inventory est une bonne idée.

BTW: désolé pour le mauvais anglais, pas un locuteur natif

+0

Peut être que vous pouvez ajouter une méthode qui ajoute une instance de 'Product' à une instance de' Inventory'. Cette méthode serait appelée dans le constructeur de 'Product'. Je vous conseille d'écrire 'getter()' dans la classe 'Product' si ce n'est pas encore fait. – Badda

+0

merci. @ Badda oui, j'ai déjà fait un getter. –

Répondre

0

Vous pouvez modifier la classe Inventory pour maintenir une structure de données comme ci-dessous

HashMap<Integer, Product> products; 

lsinitialisez dans le constructeur, et vous pouvez appeler products.contains(<int id>) . Vous devez ajouter un nouveau produit à cette structure de données en conséquence.

Pour une utilisation correcte et efficace de HashMap, vous devez également lire à propos de la méthode de remplacement equals() et hashcode(). HashMap vous donne O (1) insertion et O (1) recherche.

+0

HashMap, je ne sais pas comment l'utiliser, mais j'en ai entendu parler. Merci, je ferai ma recherche. :) –