返回堆栈中的中间元素



我必须创建一个方法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中删除了一堆元素。这不太可能,如果是原因,故障只会偶尔发生。

相关内容

  • 没有找到相关文章

最新更新