JAVA集合 - HashMap与Hashtable

HashMap与Hashtable都是属于Map集合类,两个用法是一样的,但是还是有区别的,下面用一个实例来看Map集合类是怎么使用的

 1 /*
 2  * 作者:白客C
 3  * 时间:2020年03月02日
 4  * 内容:HashMap的用法
 5  */
 6 
 7 package com.beekc.www;
 8 import javax.swing.*;
 9 import java.util.*;
10 
11 public class Beekc {
12     public static void main(String[] args) throws Exception {
13         //创建一个HashMap对象
14         HashMap hm = new HashMap();
15 
16         Emp emp1 = new Emp("000","白客C",1000f);
17         Emp emp2 = new Emp("001","小白",1200f);
18         Emp emp3 = new Emp("002","aaa",10000f);
19 
20         //将emp放入到hm,通过000找到emp1
21         hm.put("000",emp1);
22         hm.put("001",emp2);
23         hm.put("002",emp3);
24 
25         //查找
26         if(hm.containsKey("000"))
27         {
28             System.out.println("有该员工");
29             //取出,键-值
30             Emp emp = (Emp)hm.get("000");
31             System.out.println("名字:" + emp.getName());
32             System.out.println("编号:" + emp.getEmpNo());
33             System.out.println("薪水:" + emp.getSal() + "\n");
34         }else{
35             System.out.println("没有该员工");
36         }
37 
38         //遍历HasMap中所有的key和value
39         //Iterator迭代器
40         Iterator it = hm.keySet().iterator();
41 
42         //hasNext返回一个boolean值,判断是否有下一个
43         while (it.hasNext())
44         {
45             //取出key
46             String key =it.next().toString();
47 
48             //通过key取出value
49             Emp emp = (Emp)hm.get(key);
50             System.out.println("名字:" + emp.getName());
51             System.out.println("编号:" + emp.getEmpNo());
52             System.out.println("薪水:" + emp.getSal());
53         }
54 
55     }
56 }
57 
58 //雇员类
59 class Emp{
60     //学号
61     private String empNo;
62     //姓名
63     private String name;
64     //薪水
65     private float sal;
66 
67     //构造函数
68     public Emp(String empNo, String name, float sal)
69     {
70         this.empNo = empNo;
71         this.name = name;
72         this.sal = sal;
73     }
74 
75     public String getEmpNo() {
76         return empNo;
77     }
78 
79     public void setEmpNo(String empNo) {
80         this.empNo = empNo;
81     }
82 
83     public String getName() {
84         return name;
85     }
86 
87     public void setName(String name) {
88         this.name = name;
89     }
90 
91     public float getSal() {
92         return sal;
93     }
94 
95     public void setSal(float sal) {
96         this.sal = sal;
97     }
98 }

HashMap与Hashtable的区别

HashMap和Hashtable都是java的集合类,都可以用来放java对象,这是他们的相同点,但是他们也有区别:

  Ⅰ.历史原因:Hashtable是基于陈旧的Dictionary类的,HashMap是Java 1.2引进的Map接口的一个实现。

  Ⅱ.同步性:Hashtable是同步的。这个类的一些方法保证了Hashtable中的对象是线程安全的。而HashMap则是异步的,因此HashMap中的对象并不是线程安全的。因为同步的要求会影响执行的效率,所以如果你不需要线程安全的集合那么使用HashMap是一个很好的选择,这样可以避免由于同步带来的不必要的性能开销。

  Ⅲ.值:HashMap可以让你将空值作为一个条目的key或value,但是Hashtable是不能放入空值的(null)。

猜你喜欢

转载自www.cnblogs.com/beekc/p/12395531.html