“Object oldData [] = elementData;”这一行的目的是什么?在ArrayList的ensureCapacity方法中?

时间:2012-09-24 20:39:25

标签: java arraylist

我刚刚在Java 6中遇到了一条线路,这个功能对我来说并不清楚。

它是ArrayList的Object oldData[] = elementData;方法中的行ensureCapacity(int minCapacity)oldData似乎只是一个局部变量,在方法体的范围内没有使用。我在作业中错过了一些隐藏的魔法吗?

/**
* Increases the capacity of this <tt>ArrayList</tt> instance, if
* necessary, to ensure that it can hold at least the number of elements
* specified by the minimum capacity argument.
*
* @param   minCapacity   the desired minimum capacity
*/
public void ensureCapacity(int minCapacity) {
  modCount++;
  int oldCapacity = elementData.length;
  if (minCapacity > oldCapacity) {
      Object oldData[] = elementData;
      int newCapacity = (oldCapacity * 3)/2 + 1;
      if (newCapacity < minCapacity)
          newCapacity = minCapacity;
      // minCapacity is usually close to size, so this is a win:
      elementData = Arrays.copyOf(elementData, newCapacity);
  }
}

1 个答案:

答案 0 :(得分:5)

没有目的,它是一个不断发展的代码和一个邋program的程序员的工件。

在JDK 6中引入了

Arrays.copyOf()。在此之前,代码必须使用System.arrayCopy(),这需要引用旧数组(我没有方便的JDK 1.5安装,但是愿意打赌这个。)