什么数据结构最适合存储循环中的对象?比如我有一个对象列表,A,B,C,D,E,我需要循环处理它们,A->B->C->D->E,然后E->A->B->C->D-...
处理这种情况的最佳方法是什么?谢谢。我正在考虑圆形数组,但根据维基百科,圆形数组最适合用于实现队列。
最佳答案
您可以自己编写 - 这非常简单。
这使得任何 Iterable
都是循环的——但如果给定一个空集合,则会自旋。解决这个问题留给学生,但请记住 Queue
也是一个 Collection
。
class Circular<T> implements Iterable<T> {
final Iterable<T> it;
public Circular(Iterable<T> it) {
this.it = it;
}
@Override
public Iterator<T> iterator() {
return new CircularIterator();
}
private class CircularIterator implements Iterator<T> {
// Start the ball rolling.
Iterator<T> i = it.iterator();
@Override
public boolean hasNext() {
// We're circular - we always have a next.
return true;
}
@Override
public T next() {
// Will loop until collection has elements. Could be a Queue of course.
while (!i.hasNext()) {
i = it.iterator();
}
return i.next();
}
}
}
public void test() {
List<String> l = Arrays.asList("A", "B", "C", "D");
int i = 0;
for (String s : new Circular<String>(l)) {
System.out.println(s);
if (i++ > 10) {
break;
}
}
}
关于java - 什么数据结构可以用于循环操作?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24619888/