A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© zhangx 中级黑马   /  2013-4-18 22:27  /  2178 人查看  /  7 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

感觉HashMap和Hashtable在操作上没有什么大的区别,那到底用哪个呢?哪个比较好呢?

7 个回复

倒序浏览
用HashMap,HashMap和HashTable,两者的区别,前者是线程非安全的,效率更高,后者是安全的,但是效率不高,但是需要注意的是HashTable有一个子类Properties比较重要,在和properties配置文件结合使用时有很大的威力。。。

评分

参与人数 1技术分 +1 收起 理由
陈丽莉 + 1

查看全部评分

回复 使用道具 举报
这个我以前笔试的时候遇到过
HashMap是新的,非线程安全,不检查锁,比较快
HashTable是旧的(jdk1.2以前用的),线程安全,检查锁,慢一点,不过差别很小
HashMap比较常用

评分

参与人数 1技术分 +1 收起 理由
陈丽莉 + 1

查看全部评分

回复 使用道具 举报
hashtable知道就行了 据我所知开发用的比较多的就是hashmap和ArrayList linkedList  
java属于第三代高级计算机语言  一直在更新换代 很多淘汰的东西没必要太计较  做开发用什么学什么吧

评分

参与人数 1技术分 +1 收起 理由
陈丽莉 + 1

查看全部评分

回复 使用道具 举报
你好,
HashMap
HashMap允许null值与null键,非同步,线程不安全。
它的底层实现是基于hash表的;使用元素的hashCode方法与equals方法保证key值的唯一

Hashtable
Hashtable不允许null值null键,它是同步的,不存在线程安全问题。其他与HashMap一样

但是既然HashTable是同步的,线程安全,它的效率就会降低,适合多线程操作,我们平时用的较多的都是单线程,也要求效率,
所以建议使用HashMap.
...

评分

参与人数 1技术分 +1 收起 理由
陈丽莉 + 1

查看全部评分

回复 使用道具 举报
Hashtable是1.0的老版本类,是线程安全的,键和值都不能为null;
HashMap是1.2的新版本类,是线程不安全的,键和值都可以为null;
Hashtable有一个超牛的子类--Properties

1 Properties特性
        1.0的老版本类
        Hashtable的子类(线程安全的、底层哈希表、键值都不能为null)
        有自己的映射获取方法,不建议使用父类的映射获取方法
        可以与IO流交互(很强大的功能)

2 Properties独有方法
        Object setProperty(String name, String value):代替父类的put()方法来映射值;
        String getProperty(String name):代替父类的get()方法;
        Enumeration<?> propertyNames():获取所有键。

评分

参与人数 1技术分 +1 收起 理由
陈丽莉 + 1

查看全部评分

回复 使用道具 举报
这个问题一般查看jdk就好,一定要学会查文档

回复 使用道具 举报
有以下三方面:
1.hashMap去掉了HashTable 的contains方法,但是加上了containsValue()和containsKey()方法。
2.hashTable同步的,而HashMap是非同步的,效率上逼hashTable要高。
3.hashMap允许空键值,而hashTable不允许。
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马