5-3、java.util.AbstractSequentialList

5-3、java.util.AbstractSequentialList

package java.util ;
public abstract class AbstractSequentialList< Eextends AbstractList< E> {
    protected AbstractSequentialList() {}
    public  get( int index) {
        try {
            return listIterator(index).next() ;
       catch (NoSuchElementException exc) {
            throw new IndexOutOfBoundsException( "Index: "+index) ;
        }
    }
    public  set( int index element) {
        try {
            ListIterator< E> e = listIterator(index) ;
            oldVal = e.next() ;
            e.set(element) ;
            return oldVal ;
       catch (NoSuchElementException exc) {
            throw new IndexOutOfBoundsException( "Index: "+index) ;
        }
    }
    public void  add( int index element) {
        try {
            listIterator(index).add(element) ;
       catch (NoSuchElementException exc) {
            throw new IndexOutOfBoundsException( "Index: "+index) ;
        }
    }
    public  remove( int index) {
        try {
            ListIterator< E> e = listIterator(index) ;
            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) ;
        }
    }
    // Iterators
    public Iterator< Eiterator() {
        return listIterator() ;
    }
    public abstract ListIterator< ElistIterator( int index) ;
}

//说明:
public abstract class AbstractSequentialList<E>extends AbstractList<E>
此类提供了 List 接口的骨干实现,从而最大限度地减少了实现受“ 连续访问”数据存储(如链接列表)支持的此接口所需的工作。
对于随机访问数据(如数组),应该优先使用 AbstractList,而不是先使用此类。
从某种意义上说,此类与在列表的列表迭代器上实现“随机访问”方法
(get(int index)、set(int index, E element)、add(int index, E element) 和 remove(int index))的 AbstractList 类相对立,而不是其他关系。
要实现一个列表,程序员只需要扩展此类,并提供 listIterator 和 size 方法的实现即可。
对于不可修改的列表,程序员只需要实现列表迭代器的 hasNext、next、hasPrevious、previous 和 index 方法即可。
对于可修改的列表,程序员应该再另外实现列表迭代器的 set 方法。对于可变大小的列表,程序员应该再另外实现列表迭代器的 remove 和 add 方法。
按照 Collection 接口规范中的推荐,程序员通常应该提供一个 void(无参数)构造方法和 collection 构造方法。

继承此类的子类:LinkedList
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值