最後のN個の要素を覚えているリングを実装しようとしています。要素を追加してポインタを正しく変更します。 get()メソッドは、リングに追加された最新の要素を返す必要があります。私はペンと紙でgetメソッドのロジックを見つけようとしましたが、結局それをやり遂げました。しかし、私は私のコードを実行すると、そう思わない。事前に助けてくれてありがとう。Javaリングの実装
[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];
}
}
}
}
:[Aは何ですか?デバッガとどのように私が問題を診断するのを助けることができますか?(http://stackoverflow.com/q/25385173/5221149) – Andreas