首頁  >  文章  >  Java  >  實例詳解ArrayList中的contains方法

實例詳解ArrayList中的contains方法

王林
王林轉載
2020-08-24 15:57:464774瀏覽

實例詳解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;
}

用法:

既然已經清楚了原理, 接下來要做的就是看一下常用類別的equals方法

(學習影片推薦: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中文網其他相關文章!

陳述:
本文轉載於:csdn.net。如有侵權,請聯絡admin@php.cn刪除