问答详情
源自:-

List接口实现有哪些及其区别?

List接口实现有哪些及其区别?


提问者:凉风5 2016-10-17 13:12

个回答

  • 黑山头山大王
    2016-10-17 13:14:35
    已采纳

    1,List接口继承Iterable和Collection接口,它可以将元素插入在指定的位置,用索引方式访问元素,允许Null值插入.

    2,  List的直接实现是两个抽象类,AbstactList和AbstractSequentialList.其中,AbstractList为随即访问(如数组)实现方案提供尽可能的封装,AbstractSequentialList为连续访问(如链表)实现方案提供了尽可能的封装。

    3,ArrayList,直接父类是AbstractList,数据结构是大小可变的数组,它不是同步的,在一次性大量插入的情况下,最好先调用ensureCapacity()以减少新增空间的分配操作。它的Iterate和ListIterater是快速失败的。

    4,LinkedList,直接父类是AbstractSquentialList.数据结构是双向链表,它不是同步的,它同时实现了Deque(双向队列)和Queue(队列)接口。同时它还提供了push和pop这两个堆栈操作的接口。它的Iterate和ListIterater是快速失败的。

    5,Vector,直接父类是AbstractList,特性和ArrayList一样,只是它是线程同步的。

    6,Stack,直接父类是Vector,实现堆栈这种数据结构。

    7,AttributeList,直接父类是ArrayList,里面存放元素必须是Attribute

    8,RoleList,直接父类是ArrayList,里面存放的元素必须是Role

    9,CopyonWriteArrayList,直接父类是AbstactList,是ArrayList线程安全的一个变体,所有的操作都将数组重新复制一遍

    10,RoleUnresovledList,直接父类是ArrayList.用于存放未检索到的Role