我試圖實現一個記住最後N個元素的環。它添加元素並正確更改指針。 get()方法必須返回添加到環中的最新元素。我試圖用筆和紙在get方法中找到邏輯,最終,我設法做到了。但是,當我運行我的代碼時,它似乎並不如此。我在這裏先向您的幫助表示感謝。Java Ring實現
[1] [2] [3] [4] [5] < - 在以下的例子中,得到(0)必須返回5,並獲得(1) - 4
迭代與打印
[1] [2] [3] [4] [5]
使用GET方法 - 獲取(0),得到(1)....
[1] [5] [ 4] [3] [2] - 這裏[1]必須在[2]的右側
import java.util.AbstractCollection;
import java.util.ArrayList;
import java.util.Collection;
import java.util.Iterator;
public class CircularArrayRing<E> extends AbstractCollection<E> implements Ring<E>
{
private int elements;
private int front;
private E[] ring;
@SuppressWarnings("unchecked")
public CircularArrayRing()
{
ring = (E[]) new Object[10];
front = 0;
}
@SuppressWarnings("unchecked")
public CircularArrayRing(int size)
{
ring = (E[]) new Object[size];
front = 0;
}
@Override
public boolean add(E e)
{
ring[front] = e;
front++;
if(front == ring.length)
{
front = 0;
}
if(elements < ring.length)
{
elements++;
}
return false;
}
@Override
public Iterator<E> iterator()
{
return null;
}
@Override
public int size()
{
return elements;
}
@Override
public E get(int index) throws IndexOutOfBoundsException
{
if(index > elements - 1 || index > ring.length - 1)
{
throw new IndexOutOfBoundsException();
}
else
{
if (index > front)
{
return ring[ring.length + front -index];
}
else
{
return ring[front - index];
}
}
}
}
調試並沒有幫助,請參閱:什麼是調試器和它如何可以幫助我診斷問題?](http://stackoverflow.com/q/25385173/5221149) – Andreas