对比 HashMap,HashTable,TreeMap区别?很多人不知道。

先看再点赞,给自己一点思考的时间,如果对自己有帮助,微信搜索【程序职场】关注这个执着的职场程序员。
价值:Java技能,面试经验指导,简历优化,职场规划指导,技能提升方法,讲不完的职场故事,个人成长经验。

01

概念

HashMap
HashMap实现了Map接口,继承AbstractMap,它是基于哈希表的 Map 接口的实现。
HashMap是引用数据类型。

Hashtable
Hashtable:是Map接口的另外一个实现类,和HashMap用法类似,同时也有区别。

treeMap
TreeMap:基于红黑树(Red-Black tree)的 NavigableMap实现。该映射根据其键的自然顺序进行排序,或者根据创建映射时提供的Comparator进行排序,具体取决于使用的构造方法。
 

02

区别


1. HashTable的方法是同步的,HashMap未经同步,所以在多线程场合要手动同步HashMap这个区别就像Vector和ArrayList一样。

2. HashTable不允许null值,key和value都不可以,HashMap允许null值,key和value都可以。

3. HashTable有一个contains(Object value)功能和containsValue(Object value)功能一样。

4. HashTable使用Enumeration,HashMap使用Iterator。 
5. HashTable中hash数组默认大小是11,增加的方式是 old*2+1。HashMap中hash数组的默认大小是16,而且一定是2的指数。

6. 哈希值的使用不同,HashTable直接使用对象的hashCode。

7,这三个都对Map接口进行了实现

 

03

安全性

1.HashMap是不安全的线程,他允许Key值出现一次null   Value值出现无数次的Null

2.Hashtable是安全的线程,他不仅实现了Map接口也实现了Dictionary接口,他的key值与Value值都不允许出现Null

3.treeMap 非线程安全 可以进行排序的,默认按照键的自然顺序进行升序排序,若要进行降序排序则需要在构造集合时候传递一个比较器。

 

04

关系图

 

 

05

实例应用

class  HashMaps   {          public static void main(String[] args)          {               Map map=new HashMap();                           map.put(“a”, “aaa”);               map.put(“b”, “bbb”);               map.put(“c”, “ccc”);               map.put(“d”, “ddd”);               Iterator iterator = map.keySet().iterator();                           while (iterator.hasNext()) {                Object key = iterator.next();                System.out.println(“map.get(key) is :”+map.get(key));               }                           
            Hashtable tab=new Hashtable();                           tab.put(“a”, “aaa”);               tab.put(“b”, “bbb”);               tab.put(“c”, “ccc”);               tab.put(“d”, “ddd”);               Iterator iterator_1 = tab.keySet().iterator();               while (iterator_1.hasNext()) {                Object key = iterator_1.next();                System.out.println(“tab.get(key) is :”+tab.get(key));               }

            TreeMap tmp=new TreeMap();                           tmp.put(“a”, “aaa”);               tmp.put(“b”, “bbb”);               tmp.put(“c”, “ccc”);               tmp.put(“d”, “ddd”);               Iterator iterator_2 = tmp.keySet().iterator();               while (iterator_2.hasNext()) {                Object key = iterator_2.next();                System.out.println(“tmp.get(key) is :”+tmp.get(key));               }                    }       }

我是【尔东双月】一枚执着的职场程序员,微信搜索【程序职场】关注我。别忘了三连啊,点赞、收藏、留言,随意给,我不挑。
知乎号: 程序职场
CSDN:程序职场
注:如果文章有任何问题,欢迎毫不留情地指正。

 

 

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
1. HashMapHashtable区别 HashMapHashtable 都是用于存储键值对的集合类,它们之间的区别如下: - 线程安全性:Hashtable 是线程安全的,而 HashMap 是非线程安全的,如果需要在多线程环境下使用 HashMap,需要保证线程同步。 - null 值:Hashtable 不允许键或值为 null,而 HashMap 允许键或值为 null。 - 继承关系:Hashtable 是早期 Java 类库中的类,而 HashMap 是 Java 1.2 之后引入的类,它继承了 AbstractMap 类。 2. HashMapHashSet 的区别 HashMapHashSet 都是用于存储元素的集合类,它们之间的区别如下: - 存储方式:HashMap 存储键值对,而 HashSet 存储唯一的元素。 - 底层实现:HashMap 是基于哈希表实现的,而 HashSet 是基于 HashMap 实现的(底层使用 HashMap 存储元素)。 3. HashMapTreeMap区别 HashMapTreeMap 都是用于存储键值对的集合类,它们之间的区别如下: - 存储方式:HashMap 是基于哈希表实现的,而 TreeMap 是基于红黑树实现的,因此 TreeMap 可以对元素进行排序。 - 性能:HashMap 的插入和查找操作的时间复杂度都是 O(1),而 TreeMap 的插入和查找操作的时间复杂度都是 O(log n),因此 HashMap 的性能比 TreeMap 更高效。 - 排序:HashMap 不支持对元素进行排序,而 TreeMap 可以对元素进行排序。 总的来说,HashMapHashSet 都是非常常用的集合类,在实际开发中需要根据具体的需求选择使用哪种集合类。而 TreeMap 则适用于需要对元素进行排序的场景。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

沉默的闪客

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值