我试图实现一个记住最后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