package java.util; import java.util.Collection; import java.util.Iterator; //实现了List接口的骨干方法. //与AbstractList不同的是,该分支使用的是链表存储形式 public abstract class AbstractSquentialList<E> extends AbstractList<E>{ protected AbstractSquentialList(){ } //获取某个元素,注意.next()方法是先返回,再自增游标 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{ LisstIterator<E> e = listIterator(index); E outCast = e.next(); e.remove(); return outCast; }catch(NoSuchElementException exc){ throw new IndexOutOfBoundsException("Index: "+index); } } //在集合末尾添加另一集合 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); } } public Iterator<E> iterator(){ return listIterator(); } public abstract ListIterator<E> listIterator(int index); }