Java中哈希表有HashTable、HashMap、WeakHashMap三类,他们的区别如下:
1.HashTable的键和值都不允许是null,而HashMap、WeakHashMap可以;
2.HashTable支持同步机制,多个线程对同一个HashTable实例操作时,HashTable可以保证操作的正确性,而HashMap、WeakHashMap没有同步机制;
3.WeakHashMap会检查各元素是否“常用”,如果“不常用”会自动从WeakHashMap对象中删除,而HashTable、HashMap没有这种自动检查、删除机制;
除上述3点HashTable、HashMap、WeakHashMap的用法完全相同,以HashTable为例记述哈希表使用小结:
1.哈希表声明方法如下:
HashTable<String, int> ht = new HashTable<String, int> ();
也可以用如下声明方式:
HashTable ht = new HashTable ();
这时编译器会出现“使用了未经检查或不安全的操作”警告;
2.通过哈希表成员方法public V get(Object key)可以进行双向映射,当传入参数为键时返回对应值,当传值时返回对应键;
注意