Java之HashMap VS TreeMap、HashSet VS TreeSet

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。
方法摘要
 booleancontainsKey(Object key)
          如果此映射包含对于指定键的映射关系,则返回 true。
 booleancontainsValue(Object value)
          如果此映射将一个或多个键映射到指定值,则返回 true。
 Vget(Object key)
          返回指定键所映射的值;如果对于该键来说,此映射不包含任何映射关系,则返回 null
 booleanisEmpty()
          如果此映射不包含键-值映射关系,则返回 true。
 Vput(K key, V value)
          在此映射中关联指定值与指定键。
 Vremove(Object key)
          从此映射中移除指定键的映射关系(如果存在)。
 intsize()
          返回此映射中的键-值映射关系数。

 2.HashSet

java.util类 HashSet<E>

此类实现 Set 接口,由哈希表(实际上是一个 HashMap 实例)支持。它不保证 set 的迭代顺序;特别是它不保证该顺序恒久不变。此类允许使用 null 元素。

HashSet()
          构造一个新的空 set,其底层 HashMap 实例的默认初始容量是 16,加载因子是 0.75。

方法摘要
 booleanadd(E e)
          如果此 set 中尚未包含指定元素,则添加指定元素。
 voidclear()
          从此 set 中移除所有元素。
 booleancontains(Object o)
          如果此 set 包含指定元素,则返回 true。
 booleanisEmpty()
          如果此 set 不包含任何元素,则返回 true。
 booleanremove(Object o)
          如果指定元素存在于此 set 中,则将其移除。
 intsize()
          返回此 set 中的元素的数量(set 的容量)。

 3.TreeMap

java.util类 TreeMap<K,V>

基于红黑树(Red-Black tree)的 NavigableMap 实现。该映射根据其键的自然顺序进行排序,或者根据创建映射时提供的 Comparator 进行排序,具体取决于使用的构造方法。

此实现为 containsKey、get、put 和 remove 操作提供受保证的 log(n) 时间开销。

 

构造方法摘要
TreeMap()
          使用键的自然顺序构造一个新的、空的树映射。
方法摘要
 KceilingKey(K key)
          返回大于等于给定键的最小键;如果不存在这样的键,则返回 null
 Comparator<? super K>comparator()
          返回对此映射中的键进行排序的比较器;如果此映射使用键的自然顺序,则返回 null。
 booleancontainsKey(Object key)
          如果此映射包含指定键的映射关系,则返回 true。
 booleancontainsValue(Object value)
          如果此映射为指定值映射一个或多个键,则返回 true。
 KfirstKey()
          返回此映射中当前第一个(最低)键。
 KfloorKey(K key)
          返回小于等于给定键的最大键;如果不存在这样的键,则返回 null
 Vget(Object key)
          返回指定键所映射的值,如果对于该键而言,此映射不包含任何映射关系,则返回 null
 KhigherKey(K key)
          返回严格大于给定键的最小键;如果不存在这样的键,则返回 null
 KlastKey()
          返回映射中当前最后一个(最高)键。
 KlowerKey(K key)
          返回严格小于给定键的最大键;如果不存在这样的键,则返回 null
 Map.Entry<K,V>pollFirstEntry()
          移除并返回与此映射中的最小键关联的键-值映射关系;如果映射为空,则返回 null
 Map.Entry<K,V>pollLastEntry()
          移除并返回与此映射中的最大键关联的键-值映射关系;如果映射为空,则返回 null
 Vput(K key, V value)
          将指定值与此映射中的指定键进行关联。
 Vremove(Object key)
          如果此 TreeMap 中存在该键的映射关系,则将其删除。
 intsize()
          返回此映射中的键-值映射关系数。

4.TreeSet

java.util类 TreeSet<E>

基于 TreeMapNavigableSet 实现。使用元素的自然顺序对元素进行排序,或者根据创建 set 时提供的 Comparator 进行排序,具体取决于使用的构造方法。

此实现为基本操作(addremovecontains)提供受保证的 log(n) 时间开销。

 

构造方法摘要
TreeSet()
          构造一个新的空 set,该 set 根据其元素的自然顺序进行排序。
TreeSet(Collection<? extends E> c)
          构造一个包含指定 collection 元素的新 TreeSet,它按照其元素的自然顺序进行排序。
booleanadd(E e)
          将指定的元素添加到此 set(如果该元素尚未存在于 set 中)。
 Eceiling(E e)
          返回此 set 中大于等于给定元素的最小元素;如果不存在这样的元素,则返回 null
 Comparator<? super E>comparator()
          返回对此 set 中的元素进行排序的比较器;如果此 set 使用其元素的自然顺序,则返回 null。
 booleancontains(Object o)
          如果此 set 包含指定的元素,则返回 true
 Efirst()
          返回此 set 中当前第一个(最低)元素。
 Efloor(E e)
          返回此 set 中小于等于给定元素的最大元素;如果不存在这样的元素,则返回 null
 Ehigher(E e)
          返回此 set 中严格大于给定元素的最小元素;如果不存在这样的元素,则返回 null
 booleanisEmpty()
          如果此 set 不包含任何元素,则返回 true
 Elast()
          返回此 set 中当前最后一个(最高)元素。
 Elower(E e)
          返回此 set 中严格小于给定元素的最大元素;如果不存在这样的元素,则返回 null
 EpollFirst()
          获取并移除第一个(最低)元素;如果此 set 为空,则返回 null
 EpollLast()
          获取并移除最后一个(最高)元素;如果此 set 为空,则返回 null
 booleanremove(Object o)
          将指定的元素从 set 中移除(如果该元素存在于此 set 中)。
 intsize()
          返回 set 中的元素数(set 的容量)。

 

 

end.

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值