博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Java Map
阅读量:6760 次
发布时间:2019-06-26

本文共 972 字,大约阅读时间需要 3 分钟。

hot3.png

Java几种Map:

    1. TreeMap。TreeMap实现SortMap,底层是红黑树实现,可以快速查询,但是每次插入和删除需要花费时间,因为TreeMap是根据键值排好序的;
    2. HashMap。HashMap底层是Hash表实现,HashMap允许一个键值为null,允许多个值为null,插入、删除和查找元素,HashMap是最好的选择,HashMap遍历速度和容量有关;
    3. LinkedHashMap。LinkedHashMap是HashMap子类,保存了记录插入的顺序,LinkedHashMap遍历速度和实际数据有关;
    4. WeakHashMap。WeakHashMap弱引用HashMap,当键值除了自身引用外没有其他地方时,调用系统gc并访问键值时,WeakHashMap就会抛弃这个元素;
    5. ConcurrentHashMap。ConcurrentHashMap支持线程同步(锁住一个桶);
    6. Hashtable。Hashtable继承Dictionary,支持线程同步(锁住整张表),不允许记录的键值和值为null,hashcode直接使用object的hashcode。
对比:
    TreeMap和HashMap相比,TreeMap实现了排序,当对顺序有要求是可以使用TreeMap,但是TreeMap在插入、删除和查询上性能都不如HashMap,所以没有顺序要求时,优先考虑使用HashMap。
    HashMap和LinkedHashMap对比,一般情况下HashMap遍历速度比LinkedHashMap快,当HashMap容量很大实际数据很少时,LinkedHashMap可能比HashMap快,因为容量会影响HashMap的遍历速度,而LinkedHashMap遍历只受实际数据影响。
    ConcurrentHashMap和Hashtable。ConcurrentHashMap和Hashtable都支持线程安全,但是Hashtable是用synchronized锁住整张表,ConcurrentHashMap是分段锁之锁住一个桶,所以ConcurrentHashMap的性能要比Hashtable高。

转载于:https://my.oschina.net/u/2950586/blog/758790

你可能感兴趣的文章
C#调用c++创建的dll
查看>>
12.02个人博客
查看>>
Notification通知代码简洁使用
查看>>
UIView 动画
查看>>
ssh加密公私钥
查看>>
快速部署Python应用:Nginx+uWSGI配置详解
查看>>
mybatis-generator生成数据对象
查看>>
java Queue中 add/offer,element/peek,remove/poll区别
查看>>
一个继承了抽象类的普通类的执行顺序
查看>>
Map集合中key不存在时使用toString()方法、valueOf()方法和强制转换((String))之间的区别...
查看>>
ArcIMS 开发学习笔记(一)
查看>>
leetcode_1095. Find in Mountain Array_[Binary Search]
查看>>
关于搭建haddoop分布式系统的全部过程复习
查看>>
简单使用SOCKET,TCP,UDP模式之间的通信
查看>>
js历史返回
查看>>
JavaWeb之JavaMail
查看>>
430. Flatten a Multilevel Doubly Linked List - Medium
查看>>
ASP.NET MVC学前篇之Lambda表达式、依赖倒置
查看>>
空白不曾停止。。。
查看>>
python递归——汉诺塔
查看>>