Utilisez la méthode List.contains(Object object) pour déterminer si ArrayList contient un objet élément (dans le cas où les valeurs d'attribut de l'objet sont les mêmes mais les adresses d'objet sont différentes), si la méthode égale dans l'objet élément L'objet de List
@Override public boolean equals(Object o) { // TODO Auto-generated method stub return super.equals(o); }
fera que la méthode contain renvoie toujours false.
Affichez le code source de la méthode contain d'ArrayList comme suit :
/** * Searches this {@code ArrayList} for the specified object. * * @param object * the object to search for. * @return {@code true} if {@code object} is an element of this * {@code ArrayList}, {@code false} otherwise */ @Override public boolean contains(Object object) { Object[] a = array; int s = size; if (object != null) { for (int i = 0; i < s; i++) { if (object.equals(a[i])) { return true; } } } else { for (int i = 0; i < s; i++) { if (a[i] == null) { return true; } } } return false; }
On peut voir que la méthode contain détermine si un certain élément est inclus en fonction de la méthode equals de Object. Continuez à afficher la méthode equals dans l'objet. classe. Le code source est le suivant :
public boolean equals(Object o) { return this == o; }
Donc, utilisez "==" pour comparer les adresses des objets, c'est-à-dire si les adresses sont les mêmes, true sera renvoyé pour différent. objets avec la même valeur d'attribut d'objet mais des adresses différentes, false sera toujours renvoyé !
Si vous devez déterminer si ArrayList contient un objet en fonction du fait que les valeurs d'attribut de l'objet sont les mêmes, vous devez remplacer la méthode égale de l'objet et comparer chaque valeur d'attribut de l'objet une par une dans la méthode égale. , tel que :
package com.feng.lejuan.entity; public class QuestionInfo { private String questionId; private String answerId; private String subQuestionId; private String result; public QuestionInfo() { super(); } public QuestionInfo(String questionId, String answerId, String subQuestionId, String result) { super(); this.questionId = questionId; this.answerId = answerId; this.subQuestionId = subQuestionId; this.result = result; } public String getQuestionId() { return questionId; } public void setQuestionId(String questionId) { this.questionId = questionId; } public String getAnswerId() { return answerId; } public void setAnswerId(String answerId) { this.answerId = answerId; } public String getSubQuestionId() { return subQuestionId; } public void setSubQuestionId(String subQuestionId) { this.subQuestionId = subQuestionId; } public String getResult() { return result; } public void setResult(String result) { this.result = result; } @Override public boolean equals(Object o) { if (o instanceof QuestionInfo) { QuestionInfo question = (QuestionInfo) o; return this.questionId.equals(question.questionId) && this.subQuestionId.equals(question.subQuestionId) && this.answerId.equals(question.answerId) && this.result.equals(question.result); } return super.equals(o); } @Override public String toString() { return "QuestionInfo [questionId=" + questionId + ", answerId=" + answerId + ", subQuestionId=" + subQuestionId + ", result=" + result + "]"; } }
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!