ArrayList の contains メソッドの詳細な例

王林
リリース: 2020-08-24 15:57:46
転載
4785 人が閲覧しました

ArrayList の contains メソッドの詳細な例

ArrayList の contains メソッドは、ターゲット要素が ArrayList に含まれるかどうかを判断するために使用されます。

(推奨チュートリアル: java 入門チュートリアル)

原則:

indexOf(Object o) メソッドを呼び出す

public boolean contains(Object o) {
    return indexOf(o) >= 0;
}
ログイン後にコピー

indexOf ( Object o) メソッドは、比較のために受信した Object オブジェクトの equals メソッドを呼び出します。

public int indexOf(Object o) {
    // 传入的Object是null, 则在集合中寻找为null的元素
    if (o == null) {
        for (int i = 0; i < size; i++)
            if (elementData[i]==null)
                return i;
    } else { // 如果不为null, 调用equals方法比较
        for (int i = 0; i < size; i++)
            if (o.equals(elementData[i]))
                return i;
    }
    // 不满足条件, 返回-1
    return -1;
}
ログイン後にコピー

Usage:

原理は明確になったので、次に行うべきことは、一般的なクラスの等しいメソッド

(学習ビデオの推奨: java コース)

String クラス

public boolean equals(Object anObject) {
    // 如果两个对象内存地址相同, 返回true
    if (this == anObject) {
        return true;
    }
    // 判断传入Object是String的情况
    if (anObject instanceof String) {
        String anotherString = (String)anObject;
        int n = value.length;
        if (n == anotherString.value.length) {
            char v1[] = value;
            char v2[] = anotherString.value;
            int i = 0;
            // 比较String转化的char[]中的每一个char元素
            // 如果有一个不想等,则返回false
            while (n-- != 0) {
                if (v1[i] != v2[i])
                    return false;
                i++;
            }
            return true;
        }
    }
    return false;
}
ログイン後にコピー

したがって、ArrayList コレクション内の要素型の場合は String です。contains を直接使用します。このメソッドは問題ありません。

Integer クラス

他のパッケージ化タイプも基本的には同じであり、すべて比較された値であるため、contains メソッドを直接使用することもできます。

public boolean equals(Object obj) {
    if (obj instanceof Integer) {
        return value == ((Integer)obj).intValue();
    }
    return false;
}
ログイン後にコピー

その他の参照型

他の参照型を使用し、contains メソッドを使用する必要がある場合は、equals メソッドをオーバーライドする必要があることは誰もが知っていると思います。

以上がArrayList の contains メソッドの詳細な例の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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