Hashtable&HashMap
2015-09-15 07:57
435 查看
package project1; import java.util.*; public class JavaSet { public static void main(String args[]){ //ArrayList al=new ArrayList(); //ArrayList中的数据类型都是Object类型的,而所有的类都是Object的子类,所以都可以存到ArrayList中 HashMap hm =new HashMap(); Clerk c1=new Clerk("宋江"); Clerk c2=new Clerk("林冲"); hm.put("c1",c1); hm.put("c2",c2); //1、HashMap中不能重复放同一个键这样后一个键的键值会冲掉前一个键的键值 //2、使用迭代器来遍历整个key集合,然后通过HashMap的get方法获得对应的键值 //3、迭代器中放的是Object类型的,需要转化成相应的类型的。hm中的键值也是Object类型的需要转换成相应的类型 Iterator it=hm.keySet().iterator(); while(it.hasNext()){ String tempKey=(String)it.next(); Clerk temp=(Clerk)hm.get(tempKey); System.out.println(temp.getName()); } // for(int i=0;i<al.size();i++){ // Clerk temp=(Clerk)al.get(i); // 由于ArrayList中的数据都是Object的类型的,所以还需要将其强制转换成Clerk类型的 // System.out.println(temp.getName()); // } } } class Clerk{ private String name; public Clerk(String name){ this.name=name; } public String getName() { return name; } public void setName(String name) { this.name = name; } } 两者之间的差别: 相同点:HashMap和Hashtable都是java的集合类,都可以用来存放java对象 不同点: 1. 历史原因 Hashtable是基于陈旧的Dictionary类的,HashMap是Java1.2引进的Map接口的一个实现 2.同步性: Hashtable是同步的,这个类中额一些方法保证了Hashtale中的对象是线程安全的,而HashMap是异步的,因此HashMap中的对象不是线程安全的.因为同步的要求会影响执行的效率(因为每次执行的时候都要因为照顾同步性,而去查询现在是否有其他的人在执行这个程序或者在对这个变量进行操作),所以在不需要线程安全的集合时,那么使用HashMap是一个很好的选择,这样会避免由于同步带来的不必要的性能开销,从而提高开发效率。 3.值:HashMap可以让你将空值作为一个表的条目的Key或者Value,但是Hashtable是不能存放空值的(null) HashMap hm =new HashMap(); hm.put(null,null); System.out.println(hm.get(null)); console output:null 正确 Hashtable ht=new Hashtable(); ht.put(null,null); System.out.println(ht.get(null)); console output: Exception in thread "main" java.lang.NullPointerException at java.util.Hashtable.put(Unknown Source) at project1.JavaSet.main(JavaSet.java:13);
报错
相关文章推荐
- bootstrap栅格化布局
- linux设置默认从字符界面启动
- C++Primer第五版 第5章 语句(练习解答)
- Android 网络通信——Volley
- gradle--第九章 快速开始Groovy
- virtualenv 安装及使用[转]
- 0913Android基础网络技术之下载(AsyncTask)
- 0913Android基础网络技术之Volley
- C++Primer第五版 5.6.3节练习
- C++Primer第五版 5.5.2节练习
- C++Primer第五版 5.5.3节练习
- C++Primer第五版 5.5.1节练习
- SQL Server 2012 AlwaysOn高可用配置之八:新建可用性组
- C++Primer第五版 5.4.4节练习
- 教你写gulp plugin
- 【C++】写时拷贝COW
- bzoj-1112 砖块Klo
- 未能加载文件或程序集“Oracle.DataAccess”或它的某一个依赖项。试图加载格式不正确的程序。
- hdoj 1870 愚人节的礼物
- 经济学原理