[LeetCode] 数据结构 Ordered Dictionary - LinkedHashMap

如果对于以下操作,我们都希望是O(1)的时间复杂度,如何实现:

  1. Insert the key
  2. Get the key / Check if the key exists
  3. Delete the key
  4. Return the first / or the last added key/value

前三种方式可以用HashMap来实现,第四种方式可以用LinkedList来实现。

在Java中,有个类型叫LinkedHashMap,相当于HashMap + LinkedList。LinkedHashMap 继承了 HashMap,同时能够做到按照插入顺序或者访问顺序进行迭代。

LinkedHashMap有两种排序方式:insertion-ordered 或者 access-order。默认是 insertion-ordered。唯一使用 access-order 的构造方式是:

public LinkedHashMap(int initialCapacity, // 初始大小
                     float loadFactor, // 加载因子
                     boolean accessOrder) // 排序方式

涉及到的题目:
340 Longest Substring with At Most K Distinct Characters
https://leetcode.com/problems/longest-substring-with-at-most-k-distinct-characters/
146 LRU Cache
https://leetcode.com/problems/lru-cache/

你可能感兴趣的:([LeetCode] 数据结构 Ordered Dictionary - LinkedHashMap)