




已阅读5页,还剩1页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
HashMap和Hashtable的区别2008-04-12 19:082921人阅读评论(3)收藏举报导读:1 HashMap不是线程安全的 hastmap是一个接口 是map接口的子接口,是将键映射到值的对象,其中键和值都是对象,并且不能包含重复键,但可以包含重复值。HashMap允许null key和null value,而hashtable不允许。2 HashTable是线程安全的一个Collection。HashMap是Hashtable的轻量级实现(非线程安全的实现),他们都完成了Map接口,主要区别在于HashMap允许空(null)键值(key),由于非线程安全,效率上可能高于Hashtable。HashMap允许将null作为一个entry的key或者value,而Hashtable不允许。HashMap把Hashtable的contains方法去掉了,改成containsvalue和containsKey。因为contains方法容易让人引起误解。Hashtable继承自Dictionary类,而HashMap是Java1.2引进的Map interface的一个实现。最大的不同是,Hashtable的方法是Synchronize的,而HashMap不是,在多个线程访问Hashtable时,不需要自己为它的方法实现同步,而HashMap 就必须为之提供外同步。Hashtable和HashMap采用的hash/rehash算法都大概一样,所以性能不会有很大的差异。public static void main(String args)HashTable h=new HashTable();h.put(用户1,new Integer(90);h.put(用户2,new Integer(50);h.put(用户3,new Integer(60);h.put(用户4,new Integer(70);h.put(用户5,new Integer(80);Enumeration e=h.elements();while(e.hasMoreElements()System.out.println(e.nextElement();map 的方法:clear()从 Map 中删除所有映射remove(Object key)从 Map 中删除键和关联的值 put(Object key, Object value)将指定值与指定键相关联get(Object key)返回与指定键关联的值containsKey(Object key)如果 Map 包含指定键的映射,则返回 truecontainsValue(Object value)如果此 Map 将一个或多个键映射到指定值,则返回 trueisEmpty()如果 Map 不包含键-值映射,则返回 true size()返回 Map 中的键-值映射的数目这些都代表了Java中的集合,这里主要从其元素是否有序,是否可重复来进行区别记忆,以便恰当地使用,当然还存在同步方面的差异,见上一篇相关文章。有序否允许元素重复否Collection否是List是是SetAbstractSet否否HashSetTreeSet是(用二叉树排序)MapAbstractMap否使用key-value来映射和存储数据,Key必须惟一,value可以重复HashMapTreeMap是(用二叉树排序)/TrackBack.aspx?PostId=584112List 接口对Collection进行了简单的扩充,它的具体实现类常用的有ArrayList和LinkedList。你可以将任何东西放到一个List容器中,并在需要时从中取出。ArrayList从其命名中可以看出它是一种类似数组的形式进行存储,因此它的随机访问速度极快,而LinkedList的内部实现是链表,它适合于在链表中间需要频繁进行插入和删除操作。在具体应用时可以根据需要自由选择。前面说的Iterator只能对容器进行向前遍历,而 ListIterator则继承了Iterator的思想,并提供了对List进行双向遍历的方法。Set接口也是 Collection的一种扩展,而与List不同的时,在Set中的对象元素不能重复,也就是说你不能把同样的东西两次放入同一个Set容器中。它的常用具体实现有HashSet和TreeSet类。HashSet能快速定位一个元素,但是你放到HashSet中的对象需要实现hashCode()方法,它使用了前面说过的哈希码的算法。而TreeSet则将放入其中的元素按序存放,这就要求你放入其中的对象是可排序的,这就用到了集合框架提供的另外两个实用类Comparable和Comparator。一个类是可排序的,它就应该实现Comparable接口。有时多个类具有相同的排序算法,那就不需要在每分别重复定义相同的排序算法,只要实现Comparator接口即可。集合框架中还有两个很实用的公用类:Collections和 Arrays。Collections提供了对一个Collection容器进行诸如排序、复制、查找和填充等一些非常有用的方法,Arrays则是对一个数组进行类似的操作。 Map是一种把键对象和值对象进行关联的容器,而一个值对象又可以是一个Map,依次类推,这样就可形成一个多级映射。对于键对象来说,像Set一样,一个Map容器中的键对象不允许重复,这是为了保持查找结果的一致性;如果有两个键对象一样,那你想得到那个键对象所对应的值对象时就有问题了,可能你得到的并不是你想的那个值对象,结果会造成混乱,所以键的唯一性很重要,也是符合集合的性质的。当然在使用过程中,某个键所对应的值对象可能会发生变化,这时会按照最后一次修改的值对象与键对应。对于值对象则没有唯一性的要求。你可以将任意多个键都映射到一个值对象上,这不会发生任何问题(不过对你的使用却可能会造成不便,你不知道你得到的到底是那一个键所对应的值对象)。Map有两种比较常用的实现: HashMap和TreeMap。HashMap也用到了哈希码的算法,以便快速查找一个键,TreeMap则是对键按序存放,因此它便有一些扩展的方法,比如first
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 家具厂木材选材检验制度
- 信息技术2.0高校研修发展计划
- 2025贵州铜仁江口县银龄计划教师招募8人考试备考试题及答案解析
- 体育赛事现场交通组织方案及交通组织保证措施
- 高层建筑材料节约管理措施
- 开源监测工具对比分析-洞察及研究
- 造口护理技能操作规范计划
- 人教版三年级上册道德与法治学生活动计划
- 燃气管道施工关键难点及防控措施
- 六年级语文考点分解复习计划
- 2025年学历类自考专业(学前教育)学前儿童发展-学前教育原理参考题库含答案解析(5套)
- 日本设备销售合同范本
- (2024)大学生宪法知识竞赛题库及答案
- 2025年芜湖市鸠江区医院招聘16名工作人员笔试参考题库附答案解析
- T-CBDA 86-2025 建筑幕墙、采光顶及金属屋面工程质量验收标准
- 厨房消防安全培训
- 小陈 税务风险应对常见指标与答复思路
- 2025云南昭通昭阳区住房和城乡建设局招聘编外工作人员5人笔试备考题库及答案解析
- 2025年《中华人民共和国档案法》知识培训试题及答案
- 新高一数学暑假检测卷(学生版)-2025年新高一数学暑假衔接讲练 (人教A版)
- 2025至2030年中国建筑膜行业市场调查研究及发展趋势预测报告
评论
0/150
提交评论