我的数据结构类正在以SkipList的形式实现自己的数据结构。我正在处理的方法是subList。我已经解决了大部分错误,但我收到的错误是我的testSubList()
方法中存在异常。我不确定这是什么,因为我相信我已经用输入变量覆盖了所有错误。假设所有其他方法都有效,可能导致此错误的原因是什么?
public List<E> subList(int fromIndex, int toIndex)
{
//subList method written by Ryan Schubert
//if a trivial case where the index is out of bounds occurs throw exception
if (fromIndex < 0 || toIndex > this.size() || toIndex < fromIndex){
throw new IndexOutOfBoundsException();
}
//make new skiplist to add values to
List<E> sub = new SkipList<E>();
//run through the skiplist between the indices and add the values to sub
for(int i = fromIndex; i<toIndex; i++)
{
sub.add(this.get(i));
}
return sub;
}
public static boolean testSubList()
{
//testSubList method written by Ryan Schubert
//make a new list and add a bunch of values to it
List<String> testList = new SkipList<String>();
testList.add("test1");
testList.add("test2");
testList.add("test3");
testList.add("test4");
testList.add("test5");
testList.add("test6");
//make a new list and fill it with sub list values
List<String> testSubList = new SkipList<String>();
testSubList = testList.subList(1, 4);
//compare the test list to the sublist
if (testList.containsAll(testSubList))
{
System.out.println("true");
return true;
}
else
{
System.out.println("false");
return false;
}
}
答案 0 :(得分:0)
要了解哪一行代码导致问题,您可以打印从此方法抛出的异常的堆栈跟踪。
你不认为在第一个&#34; for&#34;循环,你应该用toIndex > this.size()
替换toIndex >= this.size()
?列表的最后一个索引是size() - 1
。例如,如果列表中有3个项目size() = 3
,但最后一项的索引是2.这意味着this.size()
的值也超出了数组的范围。