开发者学堂课程【5天玩转Java 面向对象编程训练营第四课时:复杂数据类型数组、队列HashMap、泛型】学习笔记,与课程紧密联系,让用户快速学习知识。
课程地址:
https://developer.aliyun.com/learning/course/349/detail/4084复杂数据类型数组、队列HashMap、泛型
内容简介
一、课程回顾
二、Java复杂数据结构
1、对象Object本意是是代表了某个东西,作为一个编程语言的话,为了更好的使用代码去体现要处理的数据而引用了Object;
2、Class是作为归类而产生的,把不同类型的代码进行分类;
3、Class封装:数据(变量)+行为(函数);
4.面向对象的三大特征:
①继承:子类继承父类的代码
继承性是子类自动共享父类数据结构和方法的机制,这是类之间的一种关系。在定义和实现一个类的时候,可以在一个已经存在的类的基础之上来进行,把这个已经存在的类所定义的内容作为自己的内容,并加入若干新的内容。
②封装:Class+修饰符封装代码
即隐藏对象的属性和实现细节,仅对外公开接口,控制在程序中属性的读和修改的访问级别;将抽象得到的数据和行为(或功能)相结合,形成一个有机的整体,也就是将数据与操作数据的源代码进行有机的结合,形成“类”,其中数据和函数都是类的成员。在电子方面,封装是指把硅片上的电路管脚,用导线接引到外部接头处,以便与其它器件连接。
③多态:同一种行为,多种代码实现
多态性是指相同的操作或函数、过程可作用于多种类型的对象上并获得不同的结果。不同的对象,收到同一消息可以产生不同的结果,这种现象称为多态性。
5、继承的意义:代码重用;
6、多态的意义:同一种行为多种代码实现;
7、多态的实现方式:
①接口多态:依赖实现接口来提供多态能力;
②继承多态:依赖继承来提供多态能力;
③抽象多态:依赖抽象类来提供多态能力
8、接口Interface是:接口是功能的集合,同样可看作是一种特殊的数据类型,是比抽象类更为抽象的类,在Java编程语言中是一个抽象类型,是抽象方法的集合,接口通常以Interface来声明,一个类通过继承借口的方式,从而来继承接口的抽象方法。
9、抽象类Abstract Class的本质是抽象方法只能定义在抽象类中,抽象的方法和抽象的类必须由关键字abstract修饰,抽象类值只定义方法声明,不定义功能主题(即方法的实现),抽象类不可以被创建对象,抽象类只有子类继承了父类的方法,并且对其中的所有抽象方法进行了重写,该子类才不是抽象类,只要不是重写当中的所有抽象方法,那么这个子类还是抽象类。
1、数组Array:物理上内存空间连续,访问迅速快,不灵活;

数组的概念:数组Array代表的是一组数,一组连续的存储空间,相同类型的元素,所谓数组,就是想通数据类型的元素按一定的序列排列的集合,就是把有限个类型相同的变量用一个名字命名,然后用编号区分它们的变量的集合,这个名字组成为数组名,编号成为下标,也叫索引(Index),数组是一种数据结构,它包含若干相同类型的变量。
数组的特点:
数组Array内存空间连续,数组是可以一维、多维或交错的,数值数组元素的默认值设置为零,而引用元素的默认值设置为null,交错数组是数组的数组,因此其元素是引用类型并初始化为mull,数组的索引从0开始:具有n个元素的数组的索引是从0到null1,数组元素可以是任何类型,包括数组类型,C#7.0元组不限制数组元素类型,数组元素类型是各种类型,数组访问效率高,但是删除和插入效率低。
2、链表List:物理上不连续,插入,删除灵活;
数组连续的内存存储区
数组链表:Array数组:一组连续的物理空间,一组元素,不可变长度,查找性能高,但是插入和删除需要移动位置,性能低;
List链表:空间节点指针连接,链条节点,可变长度,插入和删除节点性能高,但是查找性能较低;
ArrayList:可变长度的数组。
List链表:
双链链表的好处是可以双向查找,但是双向链表需要的空间较大。
举例:List练习
1.新建了一个对象,List,存储整数元素
2.求和 遍历列表
3、枚举(Enumeration);
4、集合(Set);
5、向量(Vector);
6、栈(Stack):先进后出;
7、字典(Dictionary);
8、哈希表(Hashtable);
8.1哈希的继承关系:Map的继承关系
8.2HashMap,存储
8.2.1.HashMap哈希映射:存储值对(Key/Value)数据
8.2.2.类型定义Java.util.HashMap,V>
8.2.3.public class HashMapV>
8.2.4.extends AbstractMapV>
8.2.5.implements Map,Cloneable,Serializable
8.2.6.继承了抽象类AbstractMap
8.2.7.基于哈希表的Map接口的实现,并允许null值和null键
8.2.8.提供了get()和put()方法
8.2.9.HashMap是无序的,即不会记录插入的顺序
8.2.10.HashMap与Hashtable基本一样,但是不同步,允许为null。
8.3HashMap例子
8.3.1定义用户类型
8.3.2.Hash哈希,映射,键值对
8.3.3.根据手机号,查询QQ、微信、钉钉、支付宝、淘宝用户信息。User类型
8.3.4.手机号查询账户信息
8.3.5.调用重写方法打印字符串
9、队列(Queue);
10、树(Tree)。
Java作为一个编程语言,已经提供了系统预定义的类型,这些类型帮助快速的去书写代码,本质上就是代码重用。
举例:
1.定义数组 长度5,整数类型的数组
2.求数组中所有元素的和
3.字符串数组