--- jsr166/src/main/java/util/ArrayList.java 2005/12/12 00:04:16 1.15
+++ jsr166/src/main/java/util/ArrayList.java 2006/03/19 17:40:40 1.18
@@ -6,7 +6,6 @@
*/
package java.util;
-import java.util.*; // for javadoc (till 6280605 is fixed)
/**
* Resizable-array implementation of the List interface. Implements
@@ -123,31 +122,12 @@ public class ArrayList extends Abstra
/**
* Constructs a list containing the elements of the specified
* collection, in the order they are returned by the collection's
- * iterator. The ArrayList instance has an initial capacity of
- * 110% the size of the specified collection.
+ * iterator.
*
* @param c the collection whose elements are to be placed into this list
* @throws NullPointerException if the specified collection is null
*/
public ArrayList(Collection extends E> c) {
- int size = c.size();
- // 10% for growth
- int cap = ((size/10)+1)*11;
- if (cap > 0) {
- Object[] a = new Object[cap];
- a[size] = a[size+1] = UNALLOCATED;
- Object[] b = c.toArray(a);
- if (b[size] == null && b[size+1] == UNALLOCATED) {
- b[size+1] = null;
- elementData = b;
- this.size = size;
- return;
- }
- }
- initFromConcurrentlyMutating(c);
- }
-
- private void initFromConcurrentlyMutating(Collection extends E> c) {
elementData = c.toArray();
size = elementData.length;
// c.toArray might (incorrectly) not return Object[] (see 6260652)
@@ -155,8 +135,6 @@ public class ArrayList extends Abstra
elementData = Arrays.copyOf(elementData, size, Object[].class);
}
- private final static Object UNALLOCATED = new Object();
-
/**
* Trims the capacity of this ArrayList instance to be the
* list's current size. An application can use this operation to minimize
@@ -189,18 +167,18 @@ public class ArrayList extends Abstra
* @param minCapacity the desired minimum capacity
*/
private void growArray(int minCapacity) {
- if (minCapacity < 0) // overflow
- throw new OutOfMemoryError();
+ if (minCapacity < 0) // overflow
+ throw new OutOfMemoryError();
int oldCapacity = elementData.length;
- // Double size if small; else grow by 50%
- int newCapacity = ((oldCapacity < 64)?
- ((oldCapacity + 1) * 2):
- ((oldCapacity / 2) * 3));
- if (newCapacity < 0) // overflow
- newCapacity = Integer.MAX_VALUE;
- if (newCapacity < minCapacity)
- newCapacity = minCapacity;
- elementData = Arrays.copyOf(elementData, newCapacity);
+ // Double size if small; else grow by 50%
+ int newCapacity = ((oldCapacity < 64) ?
+ ((oldCapacity + 1) * 2) :
+ ((oldCapacity / 2) * 3));
+ if (newCapacity < 0) // overflow
+ newCapacity = Integer.MAX_VALUE;
+ if (newCapacity < minCapacity)
+ newCapacity = minCapacity;
+ elementData = Arrays.copyOf(elementData, newCapacity);
}
/**