Java主要数据结构总结

Collections

数组线性表类ArrayList 和链表类LinkedList

ArrayList用数组存储元素,这个数组是动态创建的。如果元素个数超过了数组的容量,就创建一个更大的数组,并将当前数组中所有的元素都复制到新数组中。

Queue接口

  1. 插入元素到队尾:
    boolean add(E e) —— 插入元素到队尾,如果空间不足,则抛出IllegalStateException异常;
    boolean offer(E e)——插入元素到队尾,失败则不抛异常。
  2. 删除队首元素:
    E remove()——移除队首元素,如果队列为空则抛出NoSuchElementException异常;
    E poll()——移除队首元素,如果队列为空则返回null。

LinkedHashMap

3 获取队首元素但不删除:
E element()——获取队首元素但不删除,如果队列为 空则抛出NoSuchElementException异常。

Dequeue接口

该接口继承自Queue,并在此基础上扩展了如下方法:

  1. 插入元素到队首
    void addFirst(E e);
    boolean offerFirst(E e);
  2. 插入元素到队尾:
    void addLast(E e)——等同于add();
    boolean offerLast(E e)——等同于offer()。
  3. 删除队首元素
    removeFirst()/E remove()
    pollFirst()/ poll()
  4. 删除队尾元素
    E removeLast();
    E pollLast();
  5. 获取队首元素,但不删除
    E getFirst()——等同于element()
    E peekFirst()——等同于peek()
  6. 获取队尾元素,但不删除
    E getLast();
    E peekLast();

以下是作为Stack的接口

  1. void push(E e);
    插入元素到队首,等同于addFirst()。
  2. E pop();
    移除并返回队首元素,等同于removeFirst()。
    使用LinkedHashMap实现LRU的前提是将accessOrder设置为true,以便开启按访问顺序排序模式。
    调用put或者get方法时,都会把最近使用的Entry放入到双向列表的末尾。多次操作后,我们便把最近使用的Entry放入到双向列表的后面,多次操作后,双向列表前面的Entry便是最近没有使用过的。这样当节点数满时,删除最前面的Entry即可。

你可能感兴趣的:(Java主要数据结构总结)