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集合类使用:

我们如何选择Java集合类使用

原创粉丝点击