浅析Java中Map与HashMap,Hashtable,HashSet的区别
Hashtable继承自Dictionary类,而HashMap继承自AbstractMap类。但二者都实现了Map接口。
publicclassHashtable<K,V>
extendsDictionary<K,V>
implementsMap<K,V>,Cloneable,Serializable
publicclassHashMap<K,V>
extendsAbstractMap<K,V>
implementsMap<K,V>,Cloneable,Serializable
Hashtable中的方法是Synchronize的,而HashMap中的方法在缺省情况下是非Synchronize的。在多线程并发的环境下,可以直接使用Hashtable,不需要自己为它的方法实现同步,但使用HashMap时就必须要自己增加同步处理。
HashMap把Hashtable的contains方法去掉了,改成containsValue和containsKey,因为contains方法容易让人引起误解。
Hashtable则保留了contains,containsValue和containsKey三个方法,其中contains和containsValue功能相同。
其中key和value都是对象,并且不能包含重复key,但可以包含重复的value。
Hashtable中,key和value都不允许出现null值。
HashMap中,null可以作为键,这样的键只有一个;可以有一个或多个键所对应的值为null。当get()方法返回null值时,可能是HashMap中没有该键,也可能使该键所对应的值为null。因此,在HashMap中不能由get()方法来判断HashMap中是否存在某个键,而应该用containsKey()方法来判断。
Hashtable、HashMap都使用了Iterator。而由于历史原因,Hashtable还使用了Enumeration的方式。
哈希值的使用不同,HashTable直接使用对象的hashCode。而HashMap重新计算hash值。
Hashtable和HashMap它们两个内部实现方式的数组的初始大小和扩容的方式。HashTable中hash数组默认大小是11,增加的方式是old*2+1。
HashMap中hash数组的默认大小是16,而且一定是2的指数。
相关文章
- java cloneable 接口_Cloneable 接口 记号接口(标记接口)「建议收藏」
- java map 转string_java-将Map <String,Object>转换为Map <String,String>
- java中scanner意思_Java中的Scanner
- java %08d_总结Java中String.format()的使用[通俗易懂]
- java是面向对象还是面向过程_Java面向对象编程和面向过程编程的区别[通俗易懂]
- java中applet是什么意思_Java Applet与Java Application的区别
- MySQL字段类型如何转为java_Java JDBC中,MySQL字段类型到JAVA类型的转换
- 手机版java编译器_Java编译器[通俗易懂]
- java中map根据value找key_Java Map和Map<String, Object>类型,map通过value找key
- Tomcat在Java开发中的使用笔记
- 大数据必学Java基础(五十九):Map接口源码部分
- JAVA对象转map_java处理字符串类型的map
- Java cast_java concat方法
- mybatis返回两个字段数据_java接口接收json数据
- Java数组循环_java遍历object数组
- 【Java】FileUtils练习题3
- java引用数据类型(一)
- js模仿java的Map集合,实现功能详解编程语言
- Java学习笔记之六java三种循环(for,while,do……while)的使用方法及区别详解编程语言
- Java实现MSSQL数据库连接(java连接mssql)
- Java Map.putAll()方法:追加另一个Map对象到当前Map集合
- Java Map.put()方法:获取Map集合的所有键名
- 分布式Java实现Redis分布式:从入门到精通(java实现redis)
- Linux调用Java实现编程快速开发(linux调用java)
- Java 调用 MySQL,编写数据库程序(java导入mysql)
- Java使用Redis管理过期对象的性能优化(redisjava过期)
- 机制基于Redis和Java实现可靠的过期机制(redisjava过期)
- 数据清理Java与Redis实现简单的数据过期清理(redisjava过期)
- 策略Redis与Java结合,实现有效的过期策略(redisjava过期)
- Java连接MySQL:实现数据库操作(java中连接mysql)
- 提升Java工程师技术Oracle搭配Java的绝佳美妙(java搭配oracle)
- java读取csv文件示例分享(java解析csv文件)
- java字符串求并集的方法