摘要: HashTable使用一把锁处理并发问题,当有多个线程访问时,需要多个线程竞争一把锁,导致阻塞 ConcurrentHashMap则使用分段,相当于把一个HashMap分成多个,然后每个部分分配一把锁,这样就可以支持多线程访问 HashTable使用一把锁处理并发问题,当有多个线程访问时,需要多个线 阅读全文
posted @ 2018-06-14 11:01 卡布奇诺与奶茶丶 阅读(514) 评论(0) 推荐(0) 编辑
摘要: 1、HashTable与HashMap (1)HashTable和HashMap都实现了Map接口,但是HashTable的实现是基于Dictionary抽象类。 (2)在HashMap中,null可以作为键,这样的键只有一个;可以有一个或多个键所对应的值为null。当get()方法返回null值时 阅读全文
posted @ 2018-06-14 10:13 卡布奇诺与奶茶丶 阅读(239) 评论(0) 推荐(0) 编辑
摘要: 虽然在hashmap的原理里面有这段,但是这个单独拿出来讲rehash或者resize()也是极好的。 什么时候扩容:当向容器添加元素的时候,会判断当前容器的元素个数,如果大于等于阈值 即当前数组的长度乘以加载因子的值的时候,就要自动扩容啦。 扩容(resize)就是重新计算容量,向HashMap对 阅读全文
posted @ 2018-06-14 10:02 卡布奇诺与奶茶丶 阅读(268) 评论(0) 推荐(0) 编辑
摘要: 1. HashMap的数据结构 数据结构中有数组和链表来实现对数据的存储,但这两者基本上是两个极端。 数组 数组存储区间是连续的,占用内存严重,故空间复杂的很大。但数组的二分查找时间复杂度小,为O(1);数组的特点是:寻址容易,插入和删除困难; 链表 链表存储区间离散,占用内存比较宽松,故空间复杂度 阅读全文
posted @ 2018-06-14 09:52 卡布奇诺与奶茶丶 阅读(226) 评论(0) 推荐(0) 编辑