我必须创建一个方法peek MidElement,以便返回堆栈的中间元素。因此,我必须使用ArrayList或TORTOISE-HARE算法。
下面是我的类,它有一个名为peekMidElement
的方法。如何将Size()
引用到ArrayList
。当我编译以下内容时,我在ArrayList.RangeCheck(UnknownSource)
&在ArrayList.get(UnknownSource)
public class SortableStack<E extends Comparable<E>> implements ISortableStack<E> {
private int N;
private Node first;
private ArrayList<E> listOne = new ArrayList<E>();
/* I have to reference the Stack to array list
which I am going use for finding the size of the stack */
public boolean isEmpty() {
return first == null;
}
public int size() {
return N;
}
public E peekMidElement() {
if(listOne.size() <= 0){
throw new EmptyStackException();
}
return listOne.get(listOne.size()/2);
}
我看不出您给出的代码片段是如何在您指示的位置抛出IndexOutOfBoundsExcption
的。我的结论是:
-
代码片段不是实际的代码(例如,它是从一个较大的类拼接在一起的,遗漏了一些关键的细节(,或者
-
异常不会被抛出到您指示的位置,或者
-
。。。这个类(不是线程安全的(在没有充分同步的情况下被用于多线程应用程序。这种情况是,其他线程在错误的时刻从
listOne
中删除了一堆元素。这不太可能,如果是原因,故障只会偶尔发生。