我必须创建一个方法peek MidElement,以便返回堆栈的中间元素。 所以我必须使用ArrayList或TORTOISE-HARE算法。
以下是我的类,它有一个名为peekMidElement
的方法。
如何将Size()
引用到ArrayList
。
当我编译以下内容时,我在ArrayList.RangeCheck(UnknownSource)
&获得了IndexOutOFBoundsExcption。在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);
}
答案 0 :(得分:0)
我无法看到您提供的代码段如何在您指示的位置抛出IndexOutOfBoundsExcption
。我的结论是:
代码段不是实际代码(例如,它已从较大的类拼接在一起,遗漏了一些重要的细节),或者
不会在您指定的地方抛出异常,或
...这个类(不是线程安全的)正在多线程应用程序中使用而没有足够的同步。场景是其他一些线程在错误的时刻从listOne
中删除了一堆元素。这不太可能,如果是原因,那么失败只会偶尔发生。