HashMap与HashTable详解与区别
来源:互联网 发布:程序员试用期转正申请 编辑:程序博客网 时间:2024/05/30 04:10
本人学生党一枚。Java学习过程,写这个博客纯属当复习,其中有一些概念的东西会借鉴一些大神的资料。有什么错误或者不当的地方请大家指出来在评论里指点指点我,谢谢
HashMap概念:
Map是一种以键值对储存数据的容器。而HashMap则是借助了键值key的hashcode值来组织储存,使得可以非常快速和高效地根据键值key进行数据的存取
基于哈希表的 Map 接口的实现。此实现提供所有可选的映射操作,并允许使用 null 值和 null 键。(除了不同步和允许使用 null 之外,HashMap 类与 Hashtable 大致相同。)此类不保证映射的顺序,特别是它不保证该顺序恒久不变。HashMap是线程不安全的,是异步的。
HashMap基本操作:
创建对象:
//创建一个HashMap对象 HashMap hm = new HashMap();
放入数据:
//将emp放入到hm里面去(前面是键,后面是值) hm.put("s001", emp1);
查找数据:
//如果你要查找key是 s002 (hm.containsKey("s002")
取出数据:
//如何取出 Emp emp = (Emp)hm.get("s002");
遍历HashMap:利用Iterator(迭代器)
//遍历HashMap中所有的key和value //Iterator迭代器 Iterator it = hm.keySet().iterator(); //hasNext返回一个boolean while (it.hasNext()) { //取出key然后转成字符串 String key = it.next().toString(); //通过key取出value Emp emp = (Emp)hm.get(key); System.out.println("名字:"+emp.getName()); System.out.println("薪水:"+emp.getSal()); }
HashMap基本实现代码:
/* * 功能: HashMap 的基本操作 */package demo7;import java.awt.event.MouseWheelEvent;import java.util.HashMap;import java.util.Iterator;public class Demo7_5 { public static void main(String[] args) { //创建一个HashMap对象 HashMap hm = new HashMap(); Emp emp1 = new Emp("s001", "赵蕾", 3.4f); Emp emp2 = new Emp("s002", "慧倩", 3.4f); //将emp放入到hm里面去 hm.put("s001", emp1); hm.put("s002",emp2); //如果你要查找编号是 s002 if (hm.containsKey("s002")) { System.out.println("有该员工"); //如何取出 Emp emp = (Emp)hm.get("s002"); System.out.println("名字:"+emp.getName()); }else { System.out.println("没有该员工"); } //遍历HashMap中所有的key和value //Iterator迭代器 Iterator it = hm.keySet().iterator(); //hasNext返回一个boolean while (it.hasNext()) { //取出key然后转成字符串 String key = it.next().toString(); //通过key取出value Emp emp = (Emp)hm.get(key); System.out.println("名字:"+emp.getName()); System.out.println("薪水:"+emp.getSal()); }}}
HashTable概念:
HashTable与HashMap非常相似。HashTable继承Dictionary类,实现Map接口。其中Dictionary类是任何可将键映射到相应值的类(如 Hashtable)的抽象父类。每个键和每个值都是一个对象。在任何一个 Dictionary 对象中,每个键至多与一个值相关联。Map是”key-value键值对”接口。
基于哈希表的 Map 接口的实现。此实现提供所有可选的映射操作,并允许使用 null 值和 null 键。(除了不同步和允许使用 null 之外,HashMap 类与 Hashtable 大致相同。)此类不保证映射的顺序,特别是它不保证该顺序恒久不变。另外,HashMap是非线程安全的,也就是说在多线程的环境下,可能会存在问题,而Hashtable是线程安全的。是线程同步的。
HashTable基本操作:
创建:
Hashtable ht = new Hashtable();
其他基本上与HashMap一模一样。
细节请看官方文档。
HashTable基本实现代码:
只是改了一下创建的对象。
/* * 功能: HashTable 基本用法,在用法上HashMap基本一样 * */package demo7;import java.util.Hashtable;import java.util.Iterator;public class Demo7_6 { public static void main(String[] args) { Hashtable ht = new Hashtable(); Emp emp1 = new Emp("s001", "赵蕾", 3.4f); Emp emp2 = new Emp("s002", "慧倩", 3.4f); //将emp放入到hm里面去 ht.put("s001", emp1); ht.put("s002",emp2); //如果你要查找编号是 s002 if (ht.containsKey("s002")) { System.out.println("有该员工"); //如何取出 Emp emp = (Emp)ht.get("s002"); System.out.println("名字:"+emp.getName()); }else { System.out.println("没有该员工"); } //遍历HashMap中所有的key和value //Iterator迭代器 Iterator it = ht.keySet().iterator(); //hasNext返回一个boolean while (it.hasNext()) { //取出key String key = it.next().toString(); //通过key取出value Emp emp = (Emp)ht.get(key); System.out.println("名字:"+emp.getName()); System.out.println("薪水:"+emp.getSal()); } }}
HashMap与HashTable的区别:
顺便说说ArrayList与Vector区别
顺便附上上篇文章
ArrayList详解 http://blog.csdn.net/sinat_34394641/article/details/72967744
我们如何选择Java集合类使用:
- HashMap详解,与HashTable区别
- HashMap与HashTable详解与区别
- HashMap 与HashTable 区别
- HashMap与HashTable区别
- Hashtable与HashMap区别
- HashMap与HashTable区别
- hashTable与HashMap区别
- HashMap与HashTable区别
- HashMap与Hashtable区别
- HashMap与HashTable区别
- hashMap与hashTable区别
- HashMap与Hashtable区别
- HashTable与HashMap区别
- hashMap与HashTable区别
- hashmap与hashtable区别
- hashMap与hashtable区别
- HashMap与Hashtable区别
- hashmap与hashtable区别
- Http协议基础之HTTP请求首部字段
- HTTP协议学习笔记01
- HDU-5981-Guess the number-规律
- 泡影产品需求设计文档
- bzoj3122 随机数生成器 BSGS+费马小定理求逆元
- HashMap与HashTable详解与区别
- 洛谷 P1829 半数集问题
- 使用scala实现wordcount的简单计数
- [leetcode]508. Most Frequent Subtree Sum
- JAVA学习笔记——List集合
- jquery/css实现步骤条
- 大端和小端
- SSH理论学习总结
- 买卖股票的最佳时机