HashMap,HashTable 区别,实现原理。
HashMap是HashTable 的轻量级,非线程安全的,都是实现了map接口
区别:hashmap 允许空键值对的存在,非线程安全,效率高于hashtable,因为hashtable 是synchronize修饰,而hashmap不是
扩充:
从hashtable类的注解可以看出,hashtable 是保留类,不建议使用
单线程使用hashmap 效率最高
多线程使用hashmap 的并发类 CurrentHashMap(并发容器) 代替HashMap
hashmap 和 treemap 的使用
在map 中 插入,删除元素的时候,使用hashMap,速度快,如果要对一个key集合进行有序遍历,使用treemap 效率最高。
HashMap实现原理:
hashmap 基于hash算法实现,我们通过put(key,value)存储,get(key)获取,当传入key时,hashmap会根据传入的key.hashCode()计算出hash值,根据hash值将value保存在bucket里面,当计算出相同的hash值得时候,我们称之为"hash冲突",hashmap的存储方式有两种,链表,红黑树,来存储相同hash孩子的value,当hash冲突个数较少的时候使用的是链表结构的,否则使用的是红黑树存储。
HashSet实现原理:
hashSet是基于hashMap 实现的,底层就是调用hashmap 的方法,来保存元素的,hashSet不允许重复的值。
HashMap,HashTable 区别,实现原理。的更多相关文章
- HashMap Hashtable区别
http://blog.csdn.net/java2000_net/archive/2008/06/05/2512510.aspx 我们先看2个类的定义 public class Hashtable ...
- HashMap底层实现原理/HashMap与HashTable区别/HashMap与HashSet区别
①HashMap的工作原理 HashMap基于hashing原理,我们通过put()和get()方法储存和获取对象.当我们将键值对传递给put()方法时,它调用键对象的hashCode()方法来计算h ...
- (转)HashMap底层实现原理/HashMap与HashTable区别/HashMap与HashSet区别
①HashMap的工作原理 HashMap基于hashing原理,我们通过put()和get()方法储存和获取对象.当我们将键值对传递给put()方法时,它调用键对象的hashCode()方法来计算h ...
- HashMap底层实现原理以及HashMap与HashTable区别以及HashMap与HashSet区别
①HashMap的工作原理 HashMap基于hashing原理,我们通过put()和get()方法储存和获取对象.当我们将键值对传递给put()方法时,它调用键对象的hashCode()方法来计算h ...
- HashMap底层实现原理/HashMap与HashTable区别/HashMap与HashSet区别(转)
HashMap底层实现原理/HashMap与HashTable区别/HashMap与HashSet区别 文章来源:http://www.cnblogs.com/beatIteWeNerverGiveU ...
- hashmap,hashTable concurrentHashMap 是否为线程安全,区别,如何实现的
线程安全类 在集合框架中,有些类是线程安全的,这些都是jdk1.1中的出现的.在jdk1.2之后,就出现许许多多非线程安全的类. 下面是这些线程安全的同步的类: vector:就比arraylist多 ...
- HashMap和HashTable区别【转载】
今天看到的HashMap和HashTable区别介绍,收藏留着学习. 出处:http://www.importnew.com/24822.html 代码版本 JDK每一版本都在改进.本文讨论的Hash ...
- HashMap & HashTable的区别
HashMap & HashTable的区别主要有以下: 1.HashMap是线程不安全的,HashTable是线程安全的.由这点区别可以知道,不考虑线程安全的情况下使用HashMap的效率明 ...
- HashSet HashTable HashMap的区别 及其Java集合介绍
(1)HashSet是set的一个实现类,hashMap是Map的一个实现类,同时hashMap是hashTable的替代品(为什么后面会讲到). (2)HashSet以对象作为元素,而HashMap ...
- [转载]hashmap hashtable 的区别
Hashtable 和 HashMap 做为 Map 的基本特性 两者都实现了Map接口,基本特性相同 - 对同一个Key,只会有一个对应的value值存在 - 如 ...
随机推荐
- 【BestCoder Round #93 1004】MG loves set
[题目链接]:http://acm.hdu.edu.cn/showproblem.php?pid=6022 [题意] 让你求一个集合的子集数目; 这个子集有要求; 即: 它所有元素的平方的和小于它所有 ...
- js实现方块的碰撞检测
文章地址:https://www.cnblogs.com/sandraryan/ 个人感觉.方块的碰撞检测比圆形麻烦~~ <!DOCTYPE html> <html lang=&qu ...
- HTTP协议详解以及URL具体访问过程(转载)
https://blog.csdn.net/f45056231p/article/details/82533490
- java el表达式报空指针异常(nullpointexception)
最近在使用el表达式的时候,用到了int型变量,因为,很多时候,变量不会被赋初值,后面考虑了下,应该将声明由int 改为integer,改了之后就一直报空指针异常,后面仔细查看,我的getter和se ...
- 各种浏览器怎么换ip
https://jingyan.baidu.com/article/e4d08ffdb784050fd2f60ddd.html 方法/步骤 1 用浏览器搜索ip,得到自己当前的ip. 2 用浏览器 ...
- DOM常用操作,Sass基础
一个元素的子元素个数ParentNode.childElementCount 只读属性返回一个无符号长整型数字,表示给定元素的子元素数. 取消当前事件e.preventDefault();有时候我们选 ...
- [C++] 自动关闭右下角弹窗
最近腾讯.迅雷等各种客户端,都越发喜欢在屏幕的右下角弹框了. 有骨气的人当然可以把这些软件卸载了事,但是这些客户端在某些情况下却又还是有用的.怎么办呢? 作为码农,自己实现一个自动关闭右下角弹窗的程序 ...
- Pytorch Bi-LSTM + CRF 代码详解
久闻LSTM + CRF的效果强大,最近在看Pytorch官网文档的时候,看到了这段代码,前前后后查了很多资料,终于把代码弄懂了.我希望在后来人看这段代码的时候,直接就看我的博客就能完全弄懂这段代码. ...
- H3C PPP MP配置示例二
- Vue 路由规则--传参数
1,query方法去获取参数 <!DOCTYPE html> <html lang="en"> <head> <meta charset= ...