ホームページ  >  記事  >  Java  >  Java で List.contains(Object object) メソッドを使用する方法

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

王林
王林転載
2023-05-01 18:10:071237ブラウズ

要素オブジェクト Object of Listbae95784a994b0042ac192f788e796d2 は、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 までご連絡ください。