ArrayList中的contains底层用的是不是equal?

2024-12-27 08:13:37
推荐回答(2个)
回答1:

java中当你想要看api中一个类是怎么实现的,或者是某个方法时怎么实现的你可以参考源码,具体的位置你jdk目录下的src.zip,自己解压后查看就可以了。
这里我给你取出来了,以后要记得自己去看。
可以看到,contains方法中直接调用indexOf方法,indexOf方法中采用equals方法判断,至于equals是怎么实现的,就靠你自己找了
/**
* Returns true if this list contains the specified element.
* More formally, returns true if and only if this list contains
* at least one element e such that
* (o==null ? e==null : o.equals(e)).
*
* @param o element whose presence in this list is to be tested
* @return true if this list contains the specified element
*/
public boolean contains(Object o) {
return indexOf(o) >= 0;
}

/**
* Returns the index of the first occurrence of the specified element
* in this list, or -1 if this list does not contain the element.
* More formally, returns the lowest index i such that
* (o==null ? get(i)==null : o.equals(get(i))),
* or -1 if there is no such index.
*/
public int indexOf(Object o) {
if (o == null) {
for (int i = 0; i < size; i++)
if (elementData[i]==null)
return i;
} else {
for (int i = 0; i < size; i++)
if (o.equals(elementData[i]))
return i;
}
return -1;
}

回答2:

是。