src/share/classes/java/util/ArrayList.java
Print this page
*** 607,621 ****
* (If {@code toIndex==fromIndex}, this operation has no effect.)
*
* @throws IndexOutOfBoundsException if {@code fromIndex} or
* {@code toIndex} is out of range
* ({@code fromIndex < 0 ||
- * fromIndex >= size() ||
* toIndex > size() ||
* toIndex < fromIndex})
*/
protected void removeRange(int fromIndex, int toIndex) {
modCount++;
int numMoved = size - toIndex;
System.arraycopy(elementData, toIndex, elementData, fromIndex,
numMoved);
--- 607,624 ----
* (If {@code toIndex==fromIndex}, this operation has no effect.)
*
* @throws IndexOutOfBoundsException if {@code fromIndex} or
* {@code toIndex} is out of range
* ({@code fromIndex < 0 ||
* toIndex > size() ||
* toIndex < fromIndex})
*/
protected void removeRange(int fromIndex, int toIndex) {
+ if (fromIndex > toIndex) {
+ throw new IndexOutOfBoundsException(
+ outOfBoundsMsg(fromIndex, toIndex));
+ }
modCount++;
int numMoved = size - toIndex;
System.arraycopy(elementData, toIndex, elementData, fromIndex,
numMoved);
*** 654,663 ****
--- 657,673 ----
private String outOfBoundsMsg(int index) {
return "Index: "+index+", Size: "+size;
}
/**
+ * A version used in checking (fromIndex > toIndex) condition
+ */
+ private static String outOfBoundsMsg(int fromIndex, int toIndex) {
+ return "From Index: " + fromIndex + " > To Index: " + toIndex;
+ }
+
+ /**
* Removes from this list all of its elements that are contained in the
* specified collection.
*
* @param c collection containing elements to be removed from this list
* @return {@code true} if this list changed as a result of the call