zoukankan      html  css  js  c++  java
  • 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接口)。其内部是链表实现的,因此插入和删除性能较好,迭代访问性能较好,但是不支持随机访问。

















  • 相关阅读:
    java编程题古典算法之兔子问题
    java基础之final关键字
    java基础之final关键字
    java基础之静态代码块,局部代码块,构造代码块区别。
    java基础之静态代码块,局部代码块,构造代码块区别。
    java基础之完数判断
    java基础之完数判断
    java基础之二维数组不定义列数
    正则表达式快速入门
    深入理解JSON对象
  • 原文地址:https://www.cnblogs.com/sunp823/p/5601432.html
Copyright © 2011-2022 走看看