簡體   English   中英

什么數據結構可用於循環操作?

[英]What data structure can be used for cyclic operations?

什么數據結構最適合循環存儲對象? 例如,我有一個對象列表,A,B,C,D,E,我需要循環處理它們,即A-> B-> C-> D-> E,然后是E-> A-> B- > C-> D -...

處理這種情況的最佳方法是什么? 謝謝。 我正在考慮圓形數組,但是根據Wikipedia所說,圓形數組最適合用於實現隊列。

您可以編寫自己的-非常簡單。

這將使任何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;
        }
    }
}

您需要一個循環列表,該列表是一個列表,其中尾部指向列表的開頭

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM