【发布时间】:2019-06-21 16:21:42
【问题描述】:
ArrayList 的 removeRange 工作异常。检查下面的示例代码,我给输入反向。我还以为列表被反向删除了。
例如:3 比 1 表示移除三个元素(第 3、第 2 和第 1)。
但是,输出完全让我感到困惑。想知道它是如何工作的?
从 JavaDoc 中,我找到了以下语句。如果toIndex
IndexOutOfBoundsException - 如果 fromIndex 或 toIndex 超出范围 (fromIndex = size() || toIndex > size() || toIndex )
import java.util.*;
public class TestRemoveRange extends ArrayList {
public static void main(String arg[]){
TestRemoveRange list = new TestRemoveRange();
list.add("a");
list.add("b");
list.add("c");
list.add("d");
list.add("e");
System.out.println("before remove : " + list);
list.removeRange(3, 1);
System.out.println("after remove (3, 1) : " + list); //[a, b, c, b, c, d, e]
}
}
【问题讨论】:
-
无法复制。我得到
Exception in thread "main" java.lang.IndexOutOfBoundsException: From Index: 3 > To Index: 1 at java.base/java.util.ArrayList.removeRange(ArrayList.java:664) at TestRemoveRange.main(TestRemoveRange.java:15)。 -
我的java版本是1.8.0_121。我仍然面临这个问题。