Map的相关总结

1、什么是MAP

      什么是Map,字面上就是地图,通过输入经维度信息就能够快速定位地理位置;对于其他领域,Map是一个容器,这个容器记录了一个键、一个值,有一个映射关系将其对应,从而快速的获取对应键值的内容。

2、为什么要用Map

2.1 Map的特点

   通过上面的定义,可以得出Map的一些特点:

     1、一种映射关系关联了键值和实际的存储结果,能存东西

     2、获取这个结果的时间消耗,最小能到达O(1),能快速取数

2.2 Map的类型

    根据不同的映射类型,可以将Map分为哈希Map、位图Map、树Map、链式Map,其中后两者用于排序相关的内容;而根据线程安全和读写安全又分为ConcurrentHashMap与ReadAndWriteMap。

   i、HashMap

        常见的映射方法:

             哈希算法:

              参考:https://blog.csdn.net/Beyond_2016/article/details/81286360

               https://www.cnblogs.com/endenvor/p/8512211.html

            Java 的Map映射方式:

        static final int hash(Object key) { int h; return (key == null) ? 0 : (h = key.hashCode()) ^ (h >>> 16); }

在JDK1.8的实现中,优化了高位运算的算法,通过hashCode()的高16位异或低16位实现的:(h = k.hashCode()) ^ (h >>> 16),主要是从速度、功效、质量来考虑的。以上方法得到的int的hash值,然后再通过 h & (table.length -1) 来得到该对象在数据中保存的位置。

 参考:http://ju.outofmemory.cn/entry/346983

   ii、位图Map

    所谓的位图Map是将映射关系用比特位表示,KEY本身本身就是Value在位图的位置,因此key的位置就能表示Value值;这种方式省空间,适合求解算法,查找重复值、搜索,计数用。

参考:https://blog.csdn.net/u013278314/article/details/86078071

https://www.cnblogs.com/li-ning/p/9489974.html

https://www.jianshu.com/p/c4c5a00b40db

iii、树形Map

      树的类型有哪些?

           二叉树

           B树

           B+树

           红黑树

     各自的特点和差异是什么?(待分析)

3、常用的JavaMap以及代码实现原理(待分析)

4、每种Map需要注意的点(待分析)

5、参考资料

https://www.cnblogs.com/yuanblog/p/4441017.html

https://www.cnblogs.com/little-fly/p/7344285.html

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章