博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Hashtable,HashMap,TreeMap的区别
阅读量:4171 次
发布时间:2019-05-26

本文共 1599 字,大约阅读时间需要 5 分钟。

Hashtable

Hashtable是java集合类库早期的一个实现(类名Hashtable不是HashTable),线程同步,不支持null键和值,由于同步,性能较差。

//synchronized同步    public synchronized V put(K key, V value) {
// Make sure the value is not null //值不能为null if (value == null) {
throw new NullPointerException(); } // Makes sure the key is not already in the hashtable. Entry
tab[] = table; int hash = key.hashCode(); int index = (hash & 0x7FFFFFFF) % tab.length; @SuppressWarnings("unchecked") Entry
entry = (Entry
)tab[index]; //值不能为null for(; entry != null ; entry = entry.next) {
if ((entry.hash == hash) && entry.key.equals(key)) {
V old = entry.value; entry.value = value; return old; } } addEntry(hash, key, value, index); return null;

HashMap

HashMap是最常用的集合类之一,底层实现由数据和链表构成。

HashMap线程不同步,可支持null键和值。
HashMap默认容量为16,且要求容量一定为2的整数次幂,当元素增长到需扩容时,默认增加长度一倍
数据中存储的是桶(bucket)后面跟着存储键值对的链表,HashMap通过计算需存储元素的哈希值,决定该元素存储在数据的哪个位置上。相同哈希值的键值对会存在数据的同一个位置上,按链表形式存储。
当相同哈希值的元素个数超过设定的阈值(TREEIFY_THRESHOLD,默认为8)时,则会由链表自动转成红黑
树形式存储。

存储格式:

在这里插入图片描述

TreeMap

TreeMap是一种有序的,基于红黑树实现的Map。常用的put,get,remove时间复杂度O(log(n)),操作速度较慢。元素排序方式,由其成员变量comparator决定:

/**     * The comparator used to maintain order in this tree map, or     * null if it uses the natural ordering of its keys.     *     * @serial     */    private final Comparator
comparator;

可以在TreeMap初始化时,传入自定义的Comparator,以满足自己的排序需要。

public TreeMap(Comparator
comparator) {
this.comparator = comparator; }

转载地址:http://tukai.baihongyu.com/

你可能感兴趣的文章
用python的matplotlib和numpy库绘制股票K线均线
查看>>
以互联网公司的经验告诉大家,架构师究竟比高级开发厉害在哪?
查看>>
GanttProject 使用的控件第三方包:jdnc-modifBen.jar
查看>>
ps、grep和kill联合使用杀掉进程
查看>>
openfire中的mina框架使用
查看>>
去掉Windows Messager的自动登录
查看>>
dspace可以检索中文了
查看>>
利用Eclipse编辑中文资源,配置文件
查看>>
将中文转为unicode 及转回中文函数
查看>>
《程序员》专访金蝶:是谁不相信国产软件?
查看>>
debian的gnome下的xmms乱码解决方案
查看>>
python切片操作
查看>>
python 中的split()函数和os.path.split()函数
查看>>
python 矩阵转置
查看>>
python 使用zip合并相邻的列表项
查看>>
python iter( )函数
查看>>
Python 迭代器(iterator)
查看>>
Python enumerate类
查看>>
leetcode 99 Recover Binary Search Tree (python)
查看>>
linux echo 向文件中追加信息
查看>>