AbstractSequentialList抽象类源码解析

所在包

package java.util;

继承AbstractList抽象类

public abstract class AbstractSequentialList<E> extends AbstractList<E> {
// 内部代码下面讲解
}

空构造器

protected AbstractSequentialList() {
    }

获取指定index位置的元素

这里是通过迭代器获取

 /* @throws IndexOutOfBoundsException {@inheritDoc}
     */
    public E get(int index) {
        try {
            return listIterator(index).next();
        } catch (NoSuchElementException exc) {
            throw new IndexOutOfBoundsException("Index: "+index);
        }
    }

更新index位置元素

通过迭代器更新

 /* @throws UnsupportedOperationException {@inheritDoc}
     * @throws ClassCastException            {@inheritDoc}
     * @throws NullPointerException          {@inheritDoc}
     * @throws IllegalArgumentException      {@inheritDoc}
     * @throws IndexOutOfBoundsException     {@inheritDoc}
     */
    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);
        }
    }

index位置插入元素

 /* @throws UnsupportedOperationException {@inheritDoc}
     * @throws ClassCastException            {@inheritDoc}
     * @throws NullPointerException          {@inheritDoc}
     * @throws IllegalArgumentException      {@inheritDoc}
     * @throws IndexOutOfBoundsException     {@inheritDoc}
     */
    public void add(int index, E element) {
        try {
            listIterator(index).add(element);
        } catch (NoSuchElementException exc) {
            throw new IndexOutOfBoundsException("Index: "+index);
        }
    }

删除元素 o

 /* @throws UnsupportedOperationException {@inheritDoc}
     * @throws IndexOutOfBoundsException     {@inheritDoc}
     */
    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);
        }
    }

index开始插入集合c中的元素

 /* @throws UnsupportedOperationException {@inheritDoc}
     * @throws ClassCastException            {@inheritDoc}
     * @throws NullPointerException          {@inheritDoc}
     * @throws IllegalArgumentException      {@inheritDoc}
     * @throws IndexOutOfBoundsException     {@inheritDoc}
     */
    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();
    }

迭代器抽象方法

 /* @throws IndexOutOfBoundsException {@inheritDoc}
     */
    public abstract ListIterator<E> listIterator(int index);
时间: 2024-11-05 11:47:51

AbstractSequentialList抽象类源码解析的相关文章

AbstractSet抽象类源码解析

继承AbstractCollection 实现Set 源码如下 package java.util; public abstract class AbstractSet<E> extends AbstractCollection<E> implements Set<E> { protected AbstractSet() { } public boolean equals(Object o) { if (o == this) return true; if (!(o i

EnumSet抽象类源码解析

EnumSet 专门为枚举类设计的集合类,所有元素必须是枚举类型 EnumSet的集合元素是有序的,内部以位向量的形成存储,因此占用内存小,效率高 不允许加入null元素 源码 package java.util; import sun.misc.SharedSecrets; public abstract class EnumSet<E extends Enum<E>> extends AbstractSet<E> implements Cloneable, java

AbstractList抽象类源码解析

所在包 package java.util; 继续AbstractCollection抽象类 实现List接口 public abstract class AbstractList<E> extends AbstractCollection<E> implements List<E>{ // 内部代码下面讲解 } 空构造器 protected AbstractList() { } 添加元素,在尾部添加新的元素 /* @throws UnsupportedOperatio

Dictionary抽象类源码解析

Dictionary package java.util; public abstract class Dictionary<K,V> { public Dictionary() { } abstract public int size(); abstract public boolean isEmpty(); abstract public Enumeration<K> keys(); // 枚举类型 ,在Map中是 set类型 abstract public Enumerati

AbstractQueue抽象类源码解析

继承Queue 对一些方法增加抛出异常 package java.util; public abstract class AbstractQueue<E> extends AbstractCollection<E> implements Queue<E> { /** * 空构造器 */ protected AbstractQueue() { } /** * 插入元素 * * @param e the element to add * @return <tt>

AbstractMap抽象类源码解析

实现了Map package java.util; import java.util.Map.Entry; /** * AbstractMap */ public abstract class AbstractMap<K,V> implements Map<K,V> { /** * 空构造函数 */ protected AbstractMap() { } // Query Operations /** * size */ public int size() { return ent

给jdk写注释系列之jdk1.6容器(2)-LinkedList源码解析

LinkedList是基于链表结构的一种List,在分析LinkedList源码前有必要对链表结构进行说明. 1.链表的概念 链表是由一系列非连续的节点组成的存储结构,简单分下类的话,链表又分为单向链表和双向链表,而单向/双向链表又可以分为循环链表和非循环链表,下面简单就这四种链表进行图解说明.           1.1.单向链表 单向链表就是通过每个结点的指针指向下一个结点从而链接起来的结构,最后一个节点的next指向null.      1. 2.单向循环链表           单向循环

Flume-ng源码解析之Channel组件

如果还没看过Flume-ng源码解析之启动流程,可以点击Flume-ng源码解析之启动流程 查看 1 接口介绍 组件的分析顺序是按照上一篇中启动顺序来分析的,首先是Channel,然后是Sink,最后是Source,在开始看组件源码之前我们先来看一下两个重要的接口,一个是LifecycleAware ,另一个是NamedComponent 1.1 LifecycleAware @[email protected] interface LifecycleAware {  public void s

Java 集合系列05之 LinkedList详细介绍(源码解析)和使用示例

概要  前面,我们已经学习了ArrayList,并了解了fail-fast机制.这一章我们接着学习List的实现类——LinkedList.和学习ArrayList一样,接下来呢,我们先对LinkedList有个整体认识,然后再学习它的源码:最后再通过实例来学会使用LinkedList.内容包括:第1部分 LinkedList介绍第2部分 LinkedList数据结构第3部分 LinkedList源码解析(基于JDK1.6.0_45)第4部分 LinkedList遍历方式第5部分 LinkedL