Dee*_*orn 3 java iteration containers
我需要一些容器来保存元素,如果我将尝试获取size()+ i元素,我将获得元素编号i.或者使用迭代器,它在尝试获取最后一个元素后从容器的开头开始?在这两种情况下,最佳实践是什么?我的意思是性能和易用性.
您可以创建一个简单的子类ArrayList<T>
并覆盖该get(int n)
方法,如下所示:
public T get(int n)
{
return super.get(n % this.size());
}
Run Code Online (Sandbox Code Playgroud)
至于迭代器,你需要实现自己的,这应该不是那么难.
编辑:
假设您的新类名为RingList,这是一个示例RingIterator(未经测试):
public class RingIterator<T> implements Iterator<T>
{
private int cur = 0;
private RingList<T> coll = null;
protected RingIterator(RingList<T> coll) { this.coll = coll; }
public boolean hasNext() { return size() > 0; }
public T next()
{
if (!hasNext())
throw new NoSuchElementException();
int i=cur++;
cur=cur%size();
return coll.get(i);
}
public void remove() { throw new UnsupportedOperationException(); }
}
Run Code Online (Sandbox Code Playgroud)
然后,您将覆盖as中的iterator()
方法RingList<T>
public Iterator<T> iterator()
{
return new RingIterator(this);
}
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
2119 次 |
最近记录: |