package java.util;
//顺序存取的list 的抽象类,继承AbstractList(随机存取)
//顺序存取,直接通过index来存取数据
public abstract class AbstractSequentialList<E> extends AbstractList<E> {
protected AbstractSequentialList(){
}
public E get(int index){
try {
return listIterator(index).next();
} catch (NoSuchElementException exc) {
throw new IndexOutOfBoundsException("Index: " + index);
}
}
public E set(int index, E element){
try {
ListIterator<E> e = listIterator(index);
E oldVal = e.next();
e.set(element);
return oldVal;
} catch (NoSuchElementException exc) {
throw new IndexOutOfBoundsException("Index: " + index);
}
}
public void add(int index, E element){
try {
listIterator(index).add(element);
} catch (NoSuchElementException exc) {
throw new IndexOutOfBoundsException("Index: " + index);
}
}
public E remove(int index){
try {
ListIterator<E> e = listIterator(index);
E outCast = e.next();
e.remove();
return outCast;
} catch (NoSuchElementException exc) {
throw new IndexOutOfBoundsException("Index: " + index);
}
}
// Bulk Operations
public boolean addAll(int index, Collection<? extends E> c){
try {
boolean modified = false;
ListIterator<E> e1 = listIterator(index);
Iterator<? extends E> e2 = c.iterator();
while (e2.hasNext()) {
e1.add(e2.next());
modified = true;
}
return modified;
} catch (NoSuchElementException exc) {
throw new IndexOutOfBoundsException("Index: " + index);
}
}
// Iterators
public Iterator<E> iterator(){
return listIterator();
}
public abstract ListIterator<E> listIterator(int index);
}