我在decomplier中通过Array List类找到了这个方法..
private void fastRemove(int paramInt)
{
this.modCount += 1;
int i = this.size - paramInt - 1;
if (i > 0)
System.arraycopy(this.elementData, paramInt + 1, this.elementData, paramInt, i);
this.elementData[(--this.size)] = null;
}
我只是想知道我们真正需要fastRemove()方法的条件,请提供示例以便理解清楚
答案 0 :(得分:2)
用户永远不会直接调用该方法(因此关键字private
)。 fastRemove()
是调用remove(Object o)
时实际删除的内容。
答案 1 :(得分:2)
来自此方法的评论:
跳过边界检查但不返回的私有删除方法 删除了值。
正如您可能已经看到的那样,这是由public
remove()
方法在内部调用的。如果你查看这个方法的源代码,你可以清楚地解释这个以及调用这个fastRemove()
方法的原因:
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;
}
使用此方法的想法很简单:不执行任何绑定检查并在内部重新排列数组。
答案 2 :(得分:0)
fastRemove(...)
是ArrayList
类中使用的私有方法,由类中的remove
方法使用。由于fastRemove
是私有方法,因此您无法使用此方法。但是,您可以使用使用此方法的remove
方法。从remove
方法的摘要: -
Removes the first occurrence of the specified element from this list,
if it is present. If the list does not contain the element, it is
unchanged.