LinkedHashSet supprimer les doublons objet

J'ai une question simple à vous, j'ai de la classe de Produits qui ont des champs comme ceci:

private Integer id;
private String category;
private String symbol;
private String desc;
private Double price;
private Integer quantity;

Je veux supprimer les doublons élément de LinkedHasSet basée sur l'ID, e de.g les Produits qui ont le même ID mais diffrent quantité ajouter au jeu, je veux supprimer (mise à jour) des produits avec le même ID, et il sera de mon identifiant unique de l'objet, comment le faire?

e.g
Produit: id=1, catégorie=CCTV, symbole=TVC-DS, desc=Simple Appareil photo, prix=100.00, quantité=1
Produit: id=1, catégorie=CCTV, symbole=TVC-DS, desc=Simple Appareil photo, prix=100.00, quantité=3

ne sera pas ajouté à définir

mon code:

    public void setList(Set<Product> list) {
    if(list.isEmpty()) 
        this.list = list;
    else {
        this.list.addAll(list);
        Iterator<Product> it = this.list.iterator();
        for(Product p : list) {
            while(it.hasNext()) {
                if(it.next().getId() != p.getId())
                    it.remove();
                    this.list.add(p);   
            }
        }
    }
}
Je n'ai pas vraiment compris: le jeu ne peut contenir de produits qui ont des Identifiants différents, quelles que soient leurs autres attributs (quantité, mais aussi de la catégorie, symbole, etc.), droit?
Oui, l'IDENTIFIANT unique de l'objet sera Produit.id
Tout cela à propos de votre equals() et hashCode() mise en œuvre. essayez de remplacer ces méthodes de manière adéquate.

OriginalL'auteur insict | 2013-02-07