package com.orgzly.android.util; import java.util.AbstractList; import java.util.Arrays; import java.util.List; public class CircularArrayList<T> extends AbstractList { private List<T> list; public CircularArrayList(T[] array) { this.list = Arrays.asList(array); } @Override public T get(int index) { if (list.size() == 0) { throw new IndexOutOfBoundsException("Empty array"); } index = convert(index); return list.get(index); } private int convert(int index) { /* If too small. */ while (index < 0) { index = index + list.size(); } /* If too big. */ index = index % list.size(); return index; } public int indexOf(Object o) { return list.indexOf(o); } @Override public int size() { return list.size(); } }