易截截图软件、单文件、免安装、纯绿色、仅160KB

java中hashmap和hashtable的区别

 
1、  继承和实现区别
Hashtable是基于陈旧的Dictionary类的,HashMap是Java 1.2引进的Map接口的一个实现。
2、  线程安全不同
HashTable的方法是同步的,HashMap是未同步,所以在多线程场合要手动同步HashMap。
3、  对null的处理不同
HashTable不允许null值(key和value都不可以),HashMap允许null值(key和value都可以)。即HashTable 不允许null值其实在编译期不会有任何的不一样,会照样执行,只是在运行期的时候Hashtable中设置的话回出现空指针异常。HashMap允许 null值是指可以有一个或多个键所对应的值为null。当get()方法返回null值时,即可以表示 HashMap中没有该键,也可以表示该键所对应的值为null。因此,在HashMap中不能由get()方法来判断HashMap中是否存在某个键,而应该用containsKey()方法来判断。
4、  方法不同
HashTable有一个contains(Object value),功能和containsValue(Object value)功能一样。
5、HashTable使用Enumeration,HashMap使用Iterator。
6、HashTable中hash数组默认大小是11,增加的方式是 old*2+1。HashMap中hash数组的默认大小是16,而且一定是2的指数。
7、哈希值的使用不同,HashTable直接使用对象的hashCode,代码是这样的:
int hash = key.hashCode();
int index = (hash & 0x7FFFFFFF) % tab.length;
而HashMap重新计算hash值,而且用与代替求模:
int hash = hash(k);
int i = indexFor(hash, table.length);
static int hash(Object x) {
  int h = x.hashCode();
  h += ~(h << 9);
  h ^= (h >>> 14);
  h += (h << 4);
  h ^= (h >>> 10);
  return h;
}
static int indexFor(int h, int length) {
  return h & (length-1);
}
 
区别
 Hashtable
 Hashmap
 
继承、实现
 Hashtable<K,V> extends Dictionary<K,V> implements Map<K,V>, Cloneable,Serializable
 HashMap<K,V> extends AbstractMap<K,V> implements Map<K,V>, Cloneable,Serializable
 
 
线程同步
 已经同步过的可以安全使用
 未同步的,可以使用Colletcions进行同步Map Collections.synchronizedMap(Map m)
 
对null的处理
 
 Hashtable table = new Hashtable();
table.put(null, "Null");
t


相关文档:

Effective Java 学习笔记 (11)

Clone这个方法很鸡肋,原因是因为它是受保护的(protected),其二Clone这个方法是可选的,即有可能类没有提供这个方法。
clone没有调用构造函数,而且如果父类没有实现clone的话,子类永远也不可能正确实现clone.
总之,clone是个很头痛的函数,如果要正确实现,必须考虑到深考贝的情况,否则被克隆出来的对象就不是独立的 ......

Java Web 第四天 使用Servlet处理请求

一、
GET

POST
的区别
1.GET
提交的是文本内容,规定其数据长度不超过
255
个字符。在
GET
方式提交的
URL
中会显示出提交的查询数据而却提交数据的缓存会在浏览器的
URL
历史状态中,这样我们往往在浏览网页的时候点击后退键不需要重新发送请求。
2.POST
提交的可以使文本内容,也可以使二进制内容,所 ......

Java Web 第六天 作用域及监听器

一、
web
的三种作用域
ServletContext(
上下文
)
:整个
web
应用程序,线程不安全
HttpSession(
会话
)
:一个会话交互过程
ServletRequest(
请求
)
:一次请求过程
属性操作方法:
      

void setAttribute(String,Object)
       ......

几个重要的JAVA命令详解(转载)


javac
 
用法:javac <选项> <源文件>
其中,可能的选项包括:
  -g                                    ......

Java招谁惹谁了?

记得一年前,正是自己对java爱不释手的时候,而网上也是一波又一波的java嘲讽热,我愤怒了,就像人人都会捍卫自己喜欢的东西一样。我在内网一次又一次的发帖发泄,可能碍于我是版主,java批判者们也没有回帖。直到后来,大家认识我,都说路飞很擅长java,java很厉害。其实我只对J2SE略懂皮毛。我喜欢java的原因是,对于一个 ......
© 2009 ej38.com All Rights Reserved. 关于E健网联系我们 | 站点地图 | 赣ICP备09004571号