java基础---HashMap和HashTable的异同之处
2015-07-21 01:42
513 查看
1:连个都实现了Map的接口,两者的底层数据结构相同,都是transient修饰的entry数组,transient修饰的变量不会序列化即不会持久化,序列化的过程中不会包含这个变量,这个变量的生命周期仅仅是在用户的调用过程中,不能持久化到内存磁盘中。这样便于一些敏感信息的保存
2:HashMap是不安全的,不能同步,不支持多线程并发,HashTable是安全的,有同步锁,但效率低。
3:HashMap从AbstractMap继承而来,HashTable是从Dictionary继承而来
4:HashMap允许Null存在,表示key对应的value值不存在或者就是null。而HashTable不能有null
5:HashTable的hash是直接使用对象的hash,而HashMap要重新算起散列值,因而更加散列,有助于减少冲突。提高效率
6:HashTable可以用Itertor来实现遍历,HashMap也可以用这个,但在早起版本中HashTable还可以用Enumeration来遍历
7:HashTable缺省初始化数组的大小是11,可以指定数组的初始化大小,扩容采用的规则是old*2+1,
HashMap缺省的数组大小是16,长度保持2的倍数,扩容时选择大于initCaptiy的最小的2的倍数的大小
8两者都支持FF失败机制
2:HashMap是不安全的,不能同步,不支持多线程并发,HashTable是安全的,有同步锁,但效率低。
3:HashMap从AbstractMap继承而来,HashTable是从Dictionary继承而来
4:HashMap允许Null存在,表示key对应的value值不存在或者就是null。而HashTable不能有null
5:HashTable的hash是直接使用对象的hash,而HashMap要重新算起散列值,因而更加散列,有助于减少冲突。提高效率
6:HashTable可以用Itertor来实现遍历,HashMap也可以用这个,但在早起版本中HashTable还可以用Enumeration来遍历
7:HashTable缺省初始化数组的大小是11,可以指定数组的初始化大小,扩容采用的规则是old*2+1,
HashMap缺省的数组大小是16,长度保持2的倍数,扩容时选择大于initCaptiy的最小的2的倍数的大小
8两者都支持FF失败机制
相关文章推荐
- Java中的异常处理
- spring mvc 基础学习
- 使用Spring MVC 4构建Restful服务
- 深入浅出理解 | Java 内存模型
- java.net.ConnectException: localhost/127.0.0.1:8088 - Connection refused
- Java基础总结(一)
- 欢迎使用CSDN-markdown编辑器
- Spring MVC 重定向
- SpringMVC 用注解Annotation驱动的IoC功能@Autowired @Component
- java jdbc 连接池
- java基础学习笔记01
- java 处理XML(dom4j-1.6.1)
- 运行hbm2java工具和hbm2ddl工具
- 【数据库开发】事务与spring的事务支持
- Spring RESTful服务接收和返回JSON最佳实践
- spring-oauth集成cas单点登录,登陆完成进入授权页面后,按回退按钮进入404页面的问题
- spring-oauth集群负载的cas单点登出问题
- 解决eclipse老是Refreshing external folders
- instanceof, isinstance,isAssignableFrom的区别
- Java enum用法详解