`

Map学习笔记

阅读更多

Map都有哪些?
答:有HashMap、TreeMap、LinkedHashMap、WeakHashMap、ConcurrentHashMap、IdentityHashMap

HashMap:
Map基于散列表的实现(它取代了Hashtable)。插入和查询“键值对”的开销是固定的。可以通过构造器设置容量和负载因子,以调整容器的性能。
HashMap使用了特殊的值,称作散列码,来取代度键的缓慢搜索。散列码是“相对唯一”的,用以代表对象的int值,它是通过将该对象的某些信息进行转换而生成的。
hashCode()是根类Object中的方法,因为所有的java对象都能生成散列码。
HashMap就是使用对象的hashCode()进行快速查询的,此方法能显著提高性能。

要使用自己的类作为HashMap的键,必须同时重载hashCode()和equals()方法。
正确的equals()方法必须满足下列五个条件:
  1、自反性。对任意x, x.equals(x)一定返回true。
  2、对称性。对于任意x和y,如果x.equals(y)返回true,则y.equals(x)也一定返回true。
  3、传递性。对于任意x、y、z, 如果有x.equals(y)返回true,y.equals(z)返回true,那么x.equals(z)一定返回true。
  4、一致性。对于任意x和y,如果对象中用于等价比较的信息没有改变,那么无论调用x.equals(y)多少次,返回的结果应该保持一致,要么一直是true,要么一直是false。
  5、对于任意不是null的x,x.equals(null)一定返回false。

LinkedHashMap:
类似于HashMap, 但是在迭代遍历它时,取得“键值对”的方式是其插入顺序,或是最近最少使用(LRU)的次序。只比HashMap慢一点,而在迭代访问时
反而更快,因为它使用链表维护内部次序。


TreeMap:
基于红黑树(平衡二叉查找树)的实现。查看“键”或者“键值对”时,它们会被排序(次序由comparable或comparator决定)。TreeMap的特点在于,所得到的结果是经过排序的。
TreeMap是唯一带有subMap()方法的map,它可以返回一个子树。
剩下的还有WeakHashMap、ConcurrentHashMap、IdentityHashMap由于比较少用,就不多做介绍了。

总结:
对Map中使用键的要求与对Set中的元素要求一样。任何键都必须要有一个equals方法,如果键被用于散列Map,那么它必须还具有恰当的hashCode()方法;如果键被用于TreeMap,那么它
必须实现Comparable。

 

分享到:
评论

相关推荐

    P231~236C++map学习笔记.docx

    P231~236C++map学习笔记.docx

    google map api 学习笔记

    NULL 博文链接:https://zxs19861202.iteye.com/blog/647161

    Go学习笔记(第四版).zip

    Go 学习笔记, 第 4 版 4.4 Struct 47 第 5 章 ⽅法 53 5.1 ⽅法定义 53 5.2 匿名字段 54 5.3 ⽅法集 56 5.4 表达式 56 第 6 章 接⼝ 60 6.1 接⼝定义 60 6.2 执⾏机制 62 6.3 接⼝转换 63 6.4 接⼝技巧 65 第 7 章 ...

    ROS学习笔记之——多机器人探索环境

    本博文是基于这个ROS软件包(https://github.com/hrnr/m-explore)的学习笔记 目录 multi robot exploration nav_msgs/OccupancyGrid  map_msgs/OccupancyGridUpdate move_base multirobot_map_merge 参考资料 ...

    Go 学习笔记 第四版

    Go 学习笔记, 第 4 版 4 4.4 Struct 47 第 5 章 ⽅方法 53 5.1 ⽅方法定义 53 5.2 匿名字段 54 5.3 ⽅方法集 56 5.4 表达式 56 第 6 章 接⼝口 60 6.1 接⼝口定义 60 6.2 执⾏行机制 62 6.3 接⼝口转换 63 6.4 接⼝...

    python学习笔记.docx

    python学习笔记 python学习笔记全文共25页,当前为第1页。python学习笔记全文共25页,当前为第1页。第一章. Python基本用法 3 python学习笔记全文共25页,当前为第1页。 python学习笔记全文共25页,当前为第1页。 1....

    Go 语言编程 + Go 学习笔记

    Go 语言编程 + Go 学习笔记, 第 部分 语 第 1 章 类型 1.1 变量 1.2 常量 1.3 基本类型 1.4 引 类型 1.5 类型转换 1.6 字符串 1.7 指针 1.8 定义类型 第 2 章 表达式 2.1 保留字 2.2 运算符 2.3 初始化 2.4 控制流 ...

    Android Map开发基础知识学习笔记

    本教程适用于Android Map学习的初学者,这是一本很平易近人的Android入门书籍,也是开发者及非开发者两相宜的实务书籍,它能陪伴你顺利入门,并驰骋于无限宽广的Android系统和应用领域

    Tcp/IP学习笔记(MindMap)格式

    《Teach yourself TCP/IP In 24 Hours》的学习笔记,内容不是很深入,作为入门读物级别的还行。

    Java JDK 7学习笔记(国内第一本Java 7,前期版本累计销量5万册)

    丛书名: 学习笔记 出版社:清华大学出版社 ISBN:9787302282082 上架时间:2012-5-9 出版日期:2012 年5月 开本:16开 页码:564 版次:1-1 所属分类:计算机 > 软件与程序设计 > JAVA(J#) > Java 编辑推荐   ...

    c++学习笔记1 leetcode1:两数之和(map与vector)(csdn)————程序.pdf

    c++学习笔记1 leetcode1:两数之和(map与vector)(csdn)————程序

    MySQL学习笔记、学习文档

    MySQL入Ar ]很简单学习笔记李国华.dox Oracle查看表结构.txt SQL作业代理禁用.txt sql.txt SQL-Transaction事物一起执行.txt sq和oracle的区别.txt sysobjects中type字段值意思txt W3School例句.txt 按照中文首字母...

    TBB并发容器 学习笔记

    TBB 并发容器 concurrent_queue concurrent_vector concurrent_hash_map TBB 并发容器 concurrent_queue concurrent_vector concurrent_hash_map TBB 并发容器 concurrent_queue concurrent_vector concurrent_hash_...

    VC++学习笔记

    消息映射机制包括一组消息映射宏,映射宏把一个Windows消息和对应的消息处理函数联系起来。映射宏有三个:DECLARE_MESSAGE_MAP()、BEGIN_MESSAGE_MAP()、END_MESSAGE_MAP()。

    Tcp/IP学习笔记

    Teach yourself Tcp/IP In 24 Hours学习笔记,MindMap格式,树状结构,比普通的doc文档看起来更省事。

    Grub4Dos学习笔记.pdf

    Grub4Dos学习笔记: 参数详解 非常有用 想自己制作多系统引导必看

    php学习笔记

    Map 11 HTML5 12 canvas 12 HTML5废除的标签 13 XML 15 基本语法 15 DTD校验 16 在xml文件中引入dtd文件的两种方式 17 DTD元素和修饰符 17 元素属性列表说明 17 实体定义分两种 18 使用php对xml文件进行...

    java学习笔记

    java学习必看,适合初学者辅助学习。集合中常用的是:ArrayList,HashSet,HashMap。其中ArrayList和HashMap使用最为广泛。 使用HashMap,put()表示放置元素,get()表示取元素。 遍历Map,使用keySet()可以返回set...

    Hibernate学习笔记_songjignhao_1

    自己记录的学习笔记,内容很详细,有代码,包括:一对多双向关联关系、一对多双向自身关联关系、一对一关联关系(主键关联、外键关联)、一对多与一对一结合、多对多关联关系、Map、Set、List与Bag映射关系、查询...

Global site tag (gtag.js) - Google Analytics