dise que je crée une classe d'objets comme maintenant, je veux créer une arrayliste pour contenir un certain nombre de catégories d'objets comme. p> "Star Wars", 4
5 Réponses :
Si vous souhaitez avoir un ensemble d'objets uniques, utilisez Aussi, si vous souhaitez définir vous-même par vous-même lorsque des objets sont considérés comme égaux, envisagez de remplacer le définir code>
au lieu de la liste code>. p>
égale code> et
hashcode code> méthodes de la classe. P>
Cela ne serait pas rationnel avec la sémantique générale de la fonction égale () code>.
Nouvelle chose ("Star Wars", 3) Code> et
Nouvelle chose ("Star Wars", 1) code> sont deux objets différents.
Je suis d'accord avec le commentaire de Hunter, si vous avez créé un jeu de type, il ne serait pas "Star Wars", 3 et "Star Wars", 1 être considéré comme des objets uniques?
Vous pouvez remplacer la méthode Equals () Code> pour le forcer à fonctionner comme ceci, mais que Vincent mentionne cela viole le contrat général d'égaux ().
Si vous souhaitez utiliser la liste enfin que vous écrivez votre En écrivant le comparateur, vous pouvez créer un comportement comme défini. p> comparateur code>, p>
Comment le comparateur résoudra son problème lorsque ArrayList # Ajouter code> Il suffit d'insérer l'élément à la fin de la matrice intérieure?
IMHO, il est plus logique d'utiliser une carte
mappe
Vous devriez créer votre propre méthode pour vérifier si le champ code> Le champ CODE> Le champ de la classe a été défini sur "Star Wars", puis Ajouter au numéro code> correspondant code> domaine de la classe, c'est une solution possible.
Une autre solution consiste à utiliser une carte ex: p> espère que cela aide. p> p> code> avec le champ Nom comme clé et le champ NON comme valeur. p>
Il n'a pas de sens de mettre la carte dans la catégorie code> code>
@Luiggimendoza C'est juste un exemple. L'OP peut mettre le nom où qu'ils veulent.
Si chose code> est une classe modèle, pourquoi devriez-vous mettre un conteneur qui stocke uniquement les données de l'objet actuel?
@Luiggimendoza hmm ouais je suppose que cela n'a pas vraiment de sens, chaque chose aurait sa propre carte.
Vous devez éditer votre réponse et utiliser une autre classe qui a le conteneur. Ceci est un mauvais échantillon de la carte code> Utilisation
Vous devez remplacer la méthode forte> Equals forte> et Méthode HashCode Strong> dans votre truc de cette catégorie: alors vous pourriez utiliser De cette façon: P> ArrayList<Thing> myList = new ArrayList<>();
Thing first = new Thing("Star Wars", 3);
if(!myList.contains(first)){
myList.add(first);
}
Thing second = new Thing("Star Wars", 1);
if(!myList.contains(second)){
myList.add(second);
}
On dirait que vous voulez plutôt utiliser une java.Util.map à la place.
Je pense que la meilleure approche serait de mettre en œuvre une liste "sans doublons". Voir ma réponse ici: Stackoverflow.com/a/35788695/130028