Map接口
现实生活与开发中,我们常会看到这样的一类集合:用户ID与账户信息、学生姓名与考试成绩、IP地址与主机名等,这种一一对应的关系,就称作映射。Java提供了专门的集合框架用来存储这种映射关系的对象,即java.util.Map接口。
-
Map与Collection并列存在。用于保存具有
映射关系的数据:key-valueCollection集合称为单列集合,元素是孤立存在的(理解为单身)。Map集合称为双列集合,元素是成对存在的(理解为夫妻)。
-
Map 中的 key 和 value 都可以是任何引用类型的数据。但常用String类作为Map的“键”。
-
Map接口的常用实现类:
HashMap、LinkedHashMap、TreeMap和`Properties。其中,HashMap是 Map 接口使用频率最高的实现类。
泛型⭐⭐⭐
相当重要,需要掌握
数据结构和集合源码⭐⭐
数据结构,就是一种程序设计优化的方法论,研究数据的
逻辑结构和物理结构以及它们之间相互关系,并对这种结构定义相应的运算,目的是加快程序的执行速度、减少内存占用的空间。 本章面试时常问,但是实际开发中会使用即可
数据之间的逻辑关系
数据的逻辑结构指反映数据元素之间的逻辑关系,而与数据的存储无关,是独立于计算机的。
- 集合结构:数据结构中的元素之间除了“
同属一个集合” 的相互关系外,别无其他关系。集合元素之间没有逻辑关系。 - 线性结构:数据结构中的元素存在
一对一的相互关系。比如:排队。结构中必须存在唯一的首元素和唯一的尾元素。体现为:一维数组、链表、栈、队列 - 树形结构:数据结构中的元素存在
一对多的相互关系。比如:家谱、文件系统、组织架构 - 图形结构:数据结构中的元素存在
多对多的相互关系。比如:全国铁路网、地铁图
数据之间的存储关系【物理结构】
结构1:顺序结构
结构2:链式结构
结构3:索引结构
结构4:散列结构
数据之间的运算关系
施加在数据上的运算包括运算的定义和实现。运算的定义是针对逻辑结构的,指出运算的功能;运算的实现是针对存储结构的,指出运算的具体操作步骤。
- 分配资源,建立结构,释放资源
- 插入和删除
- 获取和遍历
- 修改和排序
反射⭐⭐⭐
Java程序中,所有的对象都有两种类型:编译时类型和运行时类型,而很多时候对象的编译时类型和运行时类型不一致。 Object obj = new String("hello"); obj.getClass()
例如:某些变量或形参的声明类型是Object类型,但是程序却需要调用该对象运行时类型的方法,该方法不是Object中的方法,那么如何解决呢?
解决这个问题,有两种方案:
方案1:在编译和运行时都完全知道类型的具体信息,在这种情况下,我们可以直接先使用instanceof运算符进行判断,再利用强制类型转换符将其转换成运行时类型的变量即可。
方案2:编译时根本无法预知该对象和类的真实信息,程序只能依靠运行时信息来发现该对象和类的真实信息,这就必须使用反射。