• JAVA—List集合总结



    List接口总结:

    List接口是Collection接口的子接口,从其名称可以看出,是一个元素有序(并不是按大小排序,具有顺序索引,类似于数组),默认按照元素的添加顺序设置元素的索引,List和Set不同在于List可以具有重复元素,List增加了按照索引插入(add(int index,Object element)方法),替换(set(int index,Object element)方法)和删除集合元素(remove(int index)方法)。List判断元素相同的标准:两个对象equals()方法比较返回true;
    常见方法:其中E代表范型。
    boolean add(E e) 向列表的尾部添加指定的元素
    void add(int index, E element) 在列表的指定位置插入指定元素
    void clear() 从列表中移除所有元素
    E get(int index) 返回列表中指定位置的元素
    boolean contains(Object o) 如果列表包含指定的元素,则返回 true
    E set(int index, E element)用指定元素替换列表中指定位置的元素
    int size()返回列表中的元素数。
    E remove(int index) 移除列表中指定位置的元素
    boolean isEmpty() 如果列表不包含元素
    ListIterator<E> listIterator()返回此列表元素的列表迭代器。
    List类的典型实现:
    1.ArrayList
    2.Vector
    两者均封装了一个容量动态变化的的Object数组。我们无需关心两者的初始化长度,默认的初始化长度为10,当其中的元素数量大于10时,容量会自动的增加。
    两者在用法上几乎完全相同。最显著的一个区别:ArrayList是线程不安全的,当有多个线程访问时,须手动实现同步;而Vector是线程安全的,所以Vector的性能较ArrayList低。不推荐使用Vector,即使是需要线程安全。
    Vector还提供了Stack子类,实现了“栈”这一数据结构。因此Stack也是线程安全的,性能较差
    Queue集合(接口)是用于实现“队列”这种数据结构,特点是先进先出。
    Queue的典型实现类:PriorityQueue(优先队列),PriorityQueue保存元素的顺序并不是按照入队的顺序,而是按照大小顺序,即元素按照从小到大的顺序从队头到队尾,这违反了FIFO的原则,其对元素的要求排序方法和前面文章讲述的TreeSet的要求基本一致。
    Queue还有一个子接口:Deque,实现了一个双端队列。它有一个典型的实现类:ArrayDeque,是一个基于数组实现的双端队列。可以把ArrayDeque当做栈使用(双端队列当栈,很简单,一端只进不出,一端只出不进),在程序中需要使用栈时,优先使用LinkedList或ArrayDeque,而不是stack,因为性能更加出色。
    LinkedList是一个很强大的功能容器,可以用作栈和双端队列(实现了Deque接口)。其内部是链表实现的,因此插入和删除性能较好,迭代访问性能较好,但是不支持随机访问。

















  • 相关阅读:
    Spring异常重试框架Spring Retry
    Ubuntu 16.04无法在WPS中输入中文的问题解决
    Ubuntu 16.04使用百度云的方案
    Ubuntu 16.04安装Wine版的迅雷+QQ(完美方案,终极解决方法)
    Ubuntu下Deb软件包相关安装与卸载
    Spring在Java Filter注入Bean为Null的问题解决
    MyBatis 3在Insert之后返回主键
    MySQL JDBC URL参数(转)
    MySQL索引原理及慢查询优化
    Markdown 语法整理大集合2017
  • 原文地址:https://www.cnblogs.com/sunp823/p/5601432.html
Copyright © 2020-2023  润新知