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。
相关推荐
map 的迭代器和查找操作#pragma once#include<iostream>#include<map>using namespace std; // 3.9.5 map的迭代器和查找操作 * 迭代器: * `begin()` 返回指向map首元素的迭代器,`end()` 返回指向超出容器范围的...
**谷歌地图API学习笔记** 谷歌地图API(Google Maps API)是一种强大的工具,允许...通过阅读《google map学习文档.doc》,可以深入学习这些概念并实践应用,逐步掌握谷歌地图API的使用,构建功能丰富的地图应用。
### Map集合概述与特点 ...通过以上内容的学习,我们可以了解到Map集合的基本特性和常用方法,以及如何使用这些方法进行数据的操作。这为我们在实际开发中高效地管理和操作数据提供了强大的支持。
Java是一种广泛使用的面向对象的编程语言,由Sun Microsystems(现为Oracle公司的一部分)于1995年发布。...Java学习笔记涵盖了这些核心知识点,通过深入学习和实践,你可以逐步掌握Java编程,并应用于实际项目开发中。
本学习笔记主要涵盖了Java的基础知识,包括面向对象、集合、IO流、多线程、反射与动态代理以及Java 8的新特性等方面,旨在帮助初学者或有经验的开发者巩固和提升Java编程技能。 1. 面向对象(OOP):Java的核心是...
Go语言,又称Golang,是一种静态类型的编程语言,由Google开发,于2007年首次对外公布,并在2009年进行了...通过本学习笔记的内容,我们可以对Go语言有一个全面而系统的认识,为深入学习和应用Go语言打下坚实的基础。
根据提供的信息,我们可以总结出这份文档是关于Go语言学习笔记的部分内容,主要涵盖了Go语言的基础概念、语法结构、数据类型以及并发模型等关键知识点。以下是对这些知识点的详细解析: ### Go语言概述 Go(也称作...
【Java学习笔记Markdown版】是针对Java初学者和进阶者的一份详尽教程,以Markdown格式编写,便于阅读和整理。Markdown是一种轻量级的标记语言,它允许用户使用易读易写的纯文本格式编写文档,然后转换成结构化的HTML...
本篇学习笔记主要介绍了Python中关于变量指向函数、高阶函数以及特殊高阶函数map()、reduce()、filter()和sorted()的使用方法和原理。 首先,变量在Python中不仅可以指向基本数据类型,还可以指向一个函数名。这...
本学习笔记将聚焦于与ES5的区别,帮助初学者快速掌握ES6的核心概念。** 1. **变量声明:let和const** - `let`替代了`var`进行块级作用域的变量声明,解决了`var`的变量提升和函数作用域问题。 - `const`用于声明...
这份“非常详细JavaSE学习笔记.rar”压缩包显然是一份全面的Java SE学习资源,包含了从基础知识到高级特性的全方位讲解。下面,我们将详细探讨这份笔记可能涵盖的关键知识点。 1. **Java起源与环境搭建**:笔记可能...
总结,本篇Java学习笔记主要围绕Map接口展开,深入讲解了Map的基本概念、方法、实现类以及遍历方式。同时,也提到了Java Web开发中的相关知识,如Cookie、Session、localStorage和sessionStorage的使用,以及Java 8...
Go语言学习笔记的知识点涵盖广泛,它从基础的语法到高级的并发编程,再到源码的剖析,全面介绍了Go语言的特点和编程技巧。以下是根据所提供的文件内容提取的知识点: 1. Go语言基础:Go是一种静态类型编程语言,...
《Go学习笔记-第四版》是由知名编程作者雨痕编写的关于Go语言的教程,旨在帮助读者深入理解和掌握Go语言的各个方面。Go语言,又称Golang,是Google于2009年推出的一种静态类型的、编译型的、并发型且具有垃圾回收...
这份"Java学习笔记PPT"是针对Java2版本的学习资源,旨在帮助初学者或有一定基础的开发者深入理解Java的核心概念和应用。 在Java学习的初期,掌握基本语法是至关重要的。Java的语法与C++有诸多相似之处,但更加强调...
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 章 ...
这份《Java学习笔记》包含了丰富的知识内容,旨在帮助学习者全面掌握Java编程技术。笔记分为7个PDF部分,覆盖了从基础到高级的Java编程概念。 1. **Java基础知识**:这部分内容通常包括Java的历史背景、环境配置、...
林信良的Java学习笔记是一份珍贵的学习资源,尤其对于编程初学者和具有一定开发经验的程序员。这份笔记不仅详细阐述了Java编程语言的核心概念,而且还包括了深入的高级特性,从而为不同层次的读者提供了全面的学习...
本博文是基于这个ROS软件包(https://github.com/hrnr/m-explore)的学习笔记 目录 multi robot exploration nav_msgs/OccupancyGrid map_msgs/OccupancyGridUpdate move_base multirobot_map_merge 参考资料 ...