ホームページ > Java > &#&チュートリアル > Java で List.contains(Object object) メソッドを使用する方法

Java で List.contains(Object object) メソッドを使用する方法

王林
リリース: 2023-05-01 18:10:07
転載
1324 人が閲覧しました

要素オブジェクト Object of List< の場合、List.contains(Object object) メソッドを使用して、ArrayList に要素オブジェクトが含まれているかどうかを確認します (オブジェクトの属性値は同じだがオブジェクト アドレスが異なる場合)。 E> は、equals メソッドをオーバーライドせず、デフォルトは次のとおりです:

    @Override
    public boolean equals(Object o) {
        // TODO Auto-generated method stub
        return super.equals(o);
    }
ログイン後にコピー

により、contains メソッドは常に false を返します。

ArrayList の contains メソッドのソース コードを次のように表示します:

    /**
     * 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;
    }
ログイン後にコピー

contains メソッドは、Object の equals メソッドに基づいて、特定の要素が含まれるかどうかを決定していることがわかります。ソースコードは次のとおりです:

    public boolean equals(Object o) {
        return this == o;
    }
ログイン後にコピー

そこで、「==」を使用してオブジェクトのアドレスを比較します。同じオブジェクト、つまりアドレスであれば、オブジェクト属性値が同じでアドレスが異なる異なるオブジェクトの場合は、常に false が返されます。

オブジェクトの属性値が同じかどうかに基づいて ArrayList にオブジェクトが含まれているかどうかを判断する必要がある場合は、Object の equals メソッドをオーバーライドし、オブジェクトの各属性値を 1 つずつ比較する必要があります次のような、equals メソッド内:

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 + "]";
    }
}
ログイン後にコピー

以上がJava で List.contains(Object object) メソッドを使用する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

関連ラベル:
ソース:yisu.com
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート