HashMap和Hashtable的区别? RT 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 HashMap是Hashtable的轻量级实现(非线程安全的实现),他们都完成了Map接口,主要区别在于HashMap允许空(null)键值(key),由于非线程安全,效率上可能高于Hashtable。HashMap允许将null作为一个entry的key或者value,而Hashtable不允许。HashMap把Hashtable的contains方法去掉了,改成containsvalue和containsKey。因为contains方法容易让人引起误解。 Hashtable继承自Dictionary类,而HashMap是Java1.2引进的Map interface的一个实现。最大的不同是,Hashtable的方法是Synchronize的,而HashMap不是,在多个线程访问Hashtable时,不需要自己为它的方法实现同步,而HashMap 就必须为之提供外同步。 Hashtable和HashMap采用的hash/rehash算法都大概一样,所以性能不会有很大的差异。 除了不同步和允许使用 null 之外,HashMap 类与 Hashtable 大致相同。 HashMap允许插入null,另外HashMap不是线程同步的,多线程访问的时候需要自己控制。 1、Hashtable中的方法是同步的,而HashMap中的方法在缺省情况下是非同步的。2、在HashMap中,null可以作为键,这样的键只有一个;可以有一个或多个键所对应的值为null。当get()方法返回null值时,即可以表示HashMap中没有该键,也可以表示该键所对应的值为null。因此,在HashMap中不能由get()方法来判断HashMap中是否存在某个键,而应该用containsKey()方法来判断。3、Hashtable是Dictionary的子类,HashMap是Map接口的一个实现类; 1、Hashtable中的方法是同步的,而HashMap中的方法在缺省情况下是非同步的。2、在HashMap中,null可以作为键,这样的键只有一个;可以有一个或多个键所对应的值为null。当get()方法返回null值时,即可以表示HashMap中没有该键,也可以表示该键所对应的值为null。因此,在HashMap中不能由get()方法来判断HashMap中是否存在某个键,而应该用containsKey()方法来判断。3、Hashtable是Dictionary的子类,HashMap是Map接口的一个实现类; package com.suypower.chengyu.map;import java.util.Map;import java.util.Hashtable;public class Demo { public static void main(String[] args) { String str = "aabccf"; Map<Character, Integer> map = new Hashtable<Character, Integer>(); for (int i = 0; i < str.length(); i++) { char ch = str.charAt(i); if(map.containsKey(ch)) { map.put(ch,map.get(ch).intValue()+1); } else { map.put(ch,1); } } System.out.println(map); }} 一个一直困扰我的封装类与基本类的问题 bool数组的运算 使用Java Socket实现广域网通信 选项卡标签问题 大家谈谈线程怎么学? 高难度的问题 java.sql.sqlexception :JZOr2:该查询无结果集 java中有没有不用get,set就能得到设置一个变量 求助:Frame中加入JTable为何显示有问题 CMP里面怎样处理自动增长的字段?怎样取回某字段的最大值? 项目紧急,请问java如何判断某个特定目录下是否有文件存在? 数组问题 在线~~~ JAVA 如何用程序生成数据库 实例和表结构
HashMap允许将null作为一个entry的key或者value,而Hashtable不允许。
HashMap把Hashtable的contains方法去掉了,改成containsvalue和containsKey。因为contains方法容易让人引起误解。
Hashtable继承自Dictionary类,而HashMap是Java1.2引进的Map interface的一个实现。
最大的不同是,Hashtable的方法是Synchronize的,而HashMap不是,在多个线程访问Hashtable时,不需要自己为它的方法实现同步,而HashMap 就必须为之提供外同步。
Hashtable和HashMap采用的hash/rehash算法都大概一样,所以性能不会有很大的差异。
1、Hashtable中的方法是同步的,而HashMap中的方法在缺省情况下是非同步的。
2、在HashMap中,null可以作为键,这样的键只有一个;可以有一个或多个键所对应的值为null。当get()方法返回null值时,即可以表示HashMap中没有该键,也可以表示该键所对应的值为null。因此,在HashMap中不能由get()方法来判断HashMap中是否存在某个键,而应该用containsKey()方法来判断。
3、Hashtable是Dictionary的子类,HashMap是Map接口的一个实现类;
对应的值为null。当get()方法返回null值时,即可以表示HashMap中没有该键,
也可以表示该键所对应的值为null。因此,在HashMap中不能由get()方法来判断
HashMap中是否存在某个键,而应该用containsKey()方法来判断。3、Hashtable是Dictionary的子类,HashMap是Map接口的一个实现类;
package com.suypower.chengyu.map;import java.util.Map;
import java.util.Hashtable;public class Demo {
public static void main(String[] args)
{
String str = "aabccf"; Map<Character, Integer> map = new Hashtable<Character, Integer>();
for (int i = 0; i < str.length(); i++)
{
char ch = str.charAt(i);
if(map.containsKey(ch))
{
map.put(ch,map.get(ch).intValue()+1);
}
else
{
map.put(ch,1);
}
}
System.out.println(map);
}}