ArrayList.java (addAll(int,Collection)): System.arraycopy all of the remaining elements.

* java/util/ArrayList.java (addAll(int,Collection)): System.arraycopy
        all of the remaining elements.
        * java/util/Vector.java (addAll(int,Collection)): Likewise.
        (removeRange): If toIndex == fromIndex do
        nothing, if toIndex < fromIndex throw IndexOutIfBoundsException.
        (removeAll): Always throw NullPointerException when collection is
        null.
        (retrainAll): Likewise.

From-SVN: r51979
This commit is contained in:
Mark Wielaard 2002-04-07 07:40:49 +00:00 committed by Mark Wielaard
parent 0154eaa812
commit 236fc6a041
3 changed files with 28 additions and 5 deletions

View File

@ -1,3 +1,14 @@
2002-04-06 Mark Wielaard <mark@klomp.org>
* java/util/ArrayList.java (addAll(int,Collection)): System.arraycopy
all of the remaining elements.
* java/util/Vector.java (addAll(int,Collection)): Likewise.
(removeRange): If toIndex == fromIndex do
nothing, if toIndex < fromIndex throw IndexOutIfBoundsException.
(removeAll): Always throw NullPointerException when collection is
null.
(retrainAll): Likewise.
2002-04-05 Mark Wielaard <mark@klomp.org>
* java/util/ArrayList.jva (removeRange): If toIndex == fromIndex do

View File

@ -427,8 +427,8 @@ public class ArrayList extends AbstractList
if (csize + size > data.length)
ensureCapacity(size + csize);
int end = index + csize;
if (index != size)
System.arraycopy(data, index, data, end, csize);
if (size > 0 && index != size)
System.arraycopy(data, index, data, end, size - index);
size += csize;
for ( ; index < end; index++)
data[index] = itr.next();

View File

@ -716,6 +716,9 @@ public class Vector extends AbstractList
*/
public synchronized boolean removeAll(Collection c)
{
if (c == null)
throw new NullPointerException();
int i;
int j;
for (i = 0; i < elementCount; i++)
@ -742,6 +745,9 @@ public class Vector extends AbstractList
*/
public synchronized boolean retainAll(Collection c)
{
if (c == null)
throw new NullPointerException();
int i;
int j;
for (i = 0; i < elementCount; i++)
@ -779,7 +785,8 @@ public class Vector extends AbstractList
ensureCapacity(elementCount + csize);
int end = index + csize;
if (elementCount > 0 && index != elementCount)
System.arraycopy(elementData, index, elementData, end, csize);
System.arraycopy(elementData, index,
elementData, end, elementCount - index);
elementCount += csize;
for ( ; index < end; index++)
elementData[index] = itr.next();
@ -852,23 +859,28 @@ public class Vector extends AbstractList
/**
* Removes a range of elements from this list.
* Does nothing when toIndex is equal to fromIndex.
*
* @param fromIndex the index to start deleting from (inclusive)
* @param toIndex the index to delete up to (exclusive)
* @throws IndexOutOfBoundsException if fromIndex &gt; toIndex
*/
// This does not need to be synchronized, because it is only called through
// clear() of a sublist, and clear() had already synchronized.
protected void removeRange(int fromIndex, int toIndex)
{
if (fromIndex != toIndex)
int change = toIndex - fromIndex;
if (change > 0)
{
modCount++;
System.arraycopy(elementData, toIndex, elementData, fromIndex,
elementCount - toIndex);
int save = elementCount;
elementCount -= toIndex - fromIndex;
elementCount -= change;
Arrays.fill(elementData, elementCount, save, null);
}
else if (change < 0)
throw new IndexOutOfBoundsException();
}
/**