HashMap、HashSet查找元素是 O(1)的时间复杂度(乱序),TreeMap、TreeSet是log(N)时间复杂度(顺序)
1.HashMap
java.util类 HashMap<K,V>
基于哈希表的 Map 接口的实现。此实现提供所有可选的映射操作,并允许使用 null 值和 null 键。
HashMap 的实例有两个参数影响其性能:初始容量 和加载因子。容量 是哈希表中桶的数量,初始容量只是哈希表在创建时的容量。加载因子 是哈希表在其容量自动增加之前可以达到多满的一种尺度。当哈希表中的条目数超出了加载因子与当前容量的乘积时,则要对该哈希表进行 rehash 操作(即重建内部数据结构),从而哈希表将具有大约两倍的桶数。
构造方法摘要 | |
---|---|
HashMap() 构造一个具有默认初始容量 (16) 和默认加载因子 (0.75) 的空 HashMap。 |
方法摘要 | |
---|---|
boolean | containsKey(Object key) 如果此映射包含对于指定键的映射关系,则返回 true。 |
boolean | containsValue(Object value) 如果此映射将一个或多个键映射到指定值,则返回 true。 |
V | get(Object key) 返回指定键所映射的值;如果对于该键来说,此映射不包含任何映射关系,则返回 null 。 |
boolean | isEmpty() 如果此映射不包含键-值映射关系,则返回 true。 |
V | put(K key, V value) 在此映射中关联指定值与指定键。 |
V | remove(Object key) 从此映射中移除指定键的映射关系(如果存在)。 |
int | size() 返回此映射中的键-值映射关系数。 |
2.HashSet
java.util类 HashSet<E>
此类实现 Set 接口,由哈希表(实际上是一个 HashMap 实例)支持。它不保证 set 的迭代顺序;特别是它不保证该顺序恒久不变。此类允许使用 null 元素。
HashSet() 构造一个新的空 set,其底层 HashMap 实例的默认初始容量是 16,加载因子是 0.75。 |
方法摘要 | |
---|---|
boolean | add(E e) 如果此 set 中尚未包含指定元素,则添加指定元素。 |
void | clear() 从此 set 中移除所有元素。 |
boolean | contains(Object o) 如果此 set 包含指定元素,则返回 true。 |
boolean | isEmpty() 如果此 set 不包含任何元素,则返回 true。 |
boolean | remove(Object o) 如果指定元素存在于此 set 中,则将其移除。 |
int | size() 返回此 set 中的元素的数量(set 的容量)。 |
3.TreeMap
java.util类 TreeMap<K,V>
基于红黑树(Red-Black tree)的 NavigableMap
实现。该映射根据其键的自然顺序进行排序,或者根据创建映射时提供的 Comparator
进行排序,具体取决于使用的构造方法。
此实现为 containsKey、get、put 和 remove 操作提供受保证的 log(n) 时间开销。
构造方法摘要 | |
---|---|
TreeMap() 使用键的自然顺序构造一个新的、空的树映射。 |
方法摘要 | |
---|---|
K | ceilingKey(K key) 返回大于等于给定键的最小键;如果不存在这样的键,则返回 null 。 |
Comparator<? super K> | comparator() 返回对此映射中的键进行排序的比较器;如果此映射使用键的自然顺序,则返回 null。 |
boolean | containsKey(Object key) 如果此映射包含指定键的映射关系,则返回 true。 |
boolean | containsValue(Object value) 如果此映射为指定值映射一个或多个键,则返回 true。 |
K | firstKey() 返回此映射中当前第一个(最低)键。 |
K | floorKey(K key) 返回小于等于给定键的最大键;如果不存在这样的键,则返回 null 。 |
V | get(Object key) 返回指定键所映射的值,如果对于该键而言,此映射不包含任何映射关系,则返回 null 。 |
K | higherKey(K key) 返回严格大于给定键的最小键;如果不存在这样的键,则返回 null 。 |
K | lastKey() 返回映射中当前最后一个(最高)键。 |
K | lowerKey(K key) 返回严格小于给定键的最大键;如果不存在这样的键,则返回 null 。 |
Map.Entry<K,V> | pollFirstEntry() 移除并返回与此映射中的最小键关联的键-值映射关系;如果映射为空,则返回 null 。 |
Map.Entry<K,V> | pollLastEntry() 移除并返回与此映射中的最大键关联的键-值映射关系;如果映射为空,则返回 null 。 |
V | put(K key, V value) 将指定值与此映射中的指定键进行关联。 |
V | remove(Object key) 如果此 TreeMap 中存在该键的映射关系,则将其删除。 |
int | size() 返回此映射中的键-值映射关系数。 |
4.TreeSet
java.util类 TreeSet<E>
基于 TreeMap
的 NavigableSet
实现。使用元素的自然顺序对元素进行排序,或者根据创建 set 时提供的 Comparator
进行排序,具体取决于使用的构造方法。
此实现为基本操作(add
、remove
和 contains
)提供受保证的 log(n) 时间开销。
构造方法摘要 | |
---|---|
TreeSet() 构造一个新的空 set,该 set 根据其元素的自然顺序进行排序。 | |
TreeSet(Collection<? extends E> c) 构造一个包含指定 collection 元素的新 TreeSet,它按照其元素的自然顺序进行排序。 |
boolean | add(E e) 将指定的元素添加到此 set(如果该元素尚未存在于 set 中)。 |
E | ceiling(E e) 返回此 set 中大于等于给定元素的最小元素;如果不存在这样的元素,则返回 null 。 |
Comparator<? super E> | comparator() 返回对此 set 中的元素进行排序的比较器;如果此 set 使用其元素的自然顺序,则返回 null。 |
boolean | contains(Object o) 如果此 set 包含指定的元素,则返回 true 。 |
E | first() 返回此 set 中当前第一个(最低)元素。 |
E | floor(E e) 返回此 set 中小于等于给定元素的最大元素;如果不存在这样的元素,则返回 null 。 |
E | higher(E e) 返回此 set 中严格大于给定元素的最小元素;如果不存在这样的元素,则返回 null 。 |
boolean | isEmpty() 如果此 set 不包含任何元素,则返回 true 。 |
E | last() 返回此 set 中当前最后一个(最高)元素。 |
E | lower(E e) 返回此 set 中严格小于给定元素的最大元素;如果不存在这样的元素,则返回 null 。 |
E | pollFirst() 获取并移除第一个(最低)元素;如果此 set 为空,则返回 null 。 |
E | pollLast() 获取并移除最后一个(最高)元素;如果此 set 为空,则返回 null 。 |
boolean | remove(Object o) 将指定的元素从 set 中移除(如果该元素存在于此 set 中)。 |
int | size() 返回 set 中的元素数(set 的容量)。 |
end.