Maison > Java > javaDidacticiel > Comment utiliser la méthode List.contains(Object object) en Java

Comment utiliser la méthode List.contains(Object object) en Java

王林
Libérer: 2023-05-01 18:10:07
avant
1324 Les gens l'ont consulté

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 n'est pas remplacé, la valeur par défaut est la suivante :

    @Override
    public boolean equals(Object o) {
        // TODO Auto-generated method stub
        return super.equals(o);
    }
Copier après la connexion

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;
    }
Copier après la connexion

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;
    }
Copier après la connexion

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 + "]";
    }
}
Copier après la connexion

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!

Étiquettes associées:
source:yisu.com
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal