小弟初学JAVA,很想知道HASHMAP和HASHTABLE的用法,不知道那位好心的大虾能帮小弟讲解下,最好有代码的,小弟感激不尽!
解决方案 »
- java中所有含有hash字的集合类都不允许重复吗?
- jnlp是可以通过url访问应用程序,而如果把applet放到server上不也可以通过url访问吗?两者都是先从服务器上把jar包下载到客户端,但是两者的区别
- 短信群发线程的问题
- 第一次写Java遇到时问题。求救!
- Java中有没有和.net framework中DataSet类似的类。高分求取。
- installanywhere打包问题彻底解决!foryouever进来领分,100全给你!!
- 请问如何在JBuilder中设计窗体才方便
- 讨教方案:现有一个上万行的文本文件,每一行又是几个以逗号分隔的数据块,我需要把他读出来,并且根据数据块内容动态的从中筛选数据,谁能提
- JSDK1.3中为什么找不到jsdk.jar这个文件?
- JVM崩溃
- 如何用java在数据库中删除一行数据?
- 今天第一天学,就出了个问题,帮帮忙
没用过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 就必须为之提供外同步。
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
}HashTable HashMap前者线程安全,即效率相对低些后面非线程安全,即效率相对高些前者不可以有null值后者可以有null值
多个线程访问Hashtable时,不需要自己为它的方法实现同步,而HashMap
就必须为之提供外同步。HashMap的同步问题可通过Collections的一个静态方法得到解决:
Map Collections.synchronizedMap(Map m)
这个方法返回一个同步的Map,这个Map封装了底层的HashMap的所有方法,使得底层的HashMap即使是在多线程的环境中也是安全的。