这应该是毕向东老师Java基础教学视频中的代码吧?
当调用了remove方法, java会首先调用该方法导入的参数对象的equals方法, 从下标为0的元素开始依次判断是否相同, 若equals返回true则删除该元素并返回true.
不过有一种特殊情况, 就是导入的参数对象为null时, java会依次寻找列表中同样为null的元素然后删除该元素, 与上面的原理相同.
所以, 这里remove方法返回的true表达的意思有两种. 一, 是我(java)在列表中找到了这个元素, 二, 我在列表中删除了这个元素.
下面是ArrayList中remove方法的实现代码:- public boolean remove(Object o) {
- if (o == null) {
- for (int index = 0; index < size; index++)
- if (elementData[index] == null) {
- fastRemove(index);
- return true;
- }
- } else {
- for (int index = 0; index < size; index++)
- if (o.equals(elementData[index])) {
- fastRemove(index);
- return true;
- }
- }
- return false;
- }
复制代码 这里我又要提出一个疑问了, 这样实现的话, 在列表中包含大量相同元素时调用了remove方法岂不是只能删除最靠前的仅一个元素?求大牛指教 |