天天看点

复杂数据类型数组、队列HashMap、泛型 | 学习笔记复杂数据类型数组、队列HashMap、泛型

开发者学堂课程【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:物理上内存空间连续,访问迅速快,不灵活;

复杂数据类型数组、队列HashMap、泛型 | 学习笔记复杂数据类型数组、队列HashMap、泛型

数组的概念:数组Array代表的是一组数,一组连续的存储空间,相同类型的元素,所谓数组,就是想通数据类型的元素按一定的序列排列的集合,就是把有限个类型相同的变量用一个名字命名,然后用编号区分它们的变量的集合,这个名字组成为数组名,编号成为下标,也叫索引(Index),数组是一种数据结构,它包含若干相同类型的变量。

数组的特点:

数组Array内存空间连续,数组是可以一维、多维或交错的,数值数组元素的默认值设置为零,而引用元素的默认值设置为null,交错数组是数组的数组,因此其元素是引用类型并初始化为mull,数组的索引从0开始:具有n个元素的数组的索引是从0到null1,数组元素可以是任何类型,包括数组类型,C#7.0元组不限制数组元素类型,数组元素类型是各种类型,数组访问效率高,但是删除和插入效率低。

2、链表List:物理上不连续,插入,删除灵活;

数组连续的内存存储区

复杂数据类型数组、队列HashMap、泛型 | 学习笔记复杂数据类型数组、队列HashMap、泛型

数组链表:Array数组:一组连续的物理空间,一组元素,不可变长度,查找性能高,但是插入和删除需要移动位置,性能低;

List链表:空间节点指针连接,链条节点,可变长度,插入和删除节点性能高,但是查找性能较低;

ArrayList:可变长度的数组。

List链表:

复杂数据类型数组、队列HashMap、泛型 | 学习笔记复杂数据类型数组、队列HashMap、泛型
复杂数据类型数组、队列HashMap、泛型 | 学习笔记复杂数据类型数组、队列HashMap、泛型

双链链表的好处是可以双向查找,但是双向链表需要的空间较大。

举例:List练习

1.新建了一个对象,List,存储整数元素

复杂数据类型数组、队列HashMap、泛型 | 学习笔记复杂数据类型数组、队列HashMap、泛型

2.求和 遍历列表

复杂数据类型数组、队列HashMap、泛型 | 学习笔记复杂数据类型数组、队列HashMap、泛型

3、枚举(Enumeration);

4、集合(Set);

5、向量(Vector);

6、栈(Stack):先进后出;

7、字典(Dictionary);

8、哈希表(Hashtable);

8.1哈希的继承关系:Map的继承关系

复杂数据类型数组、队列HashMap、泛型 | 学习笔记复杂数据类型数组、队列HashMap、泛型
复杂数据类型数组、队列HashMap、泛型 | 学习笔记复杂数据类型数组、队列HashMap、泛型

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定义用户类型

复杂数据类型数组、队列HashMap、泛型 | 学习笔记复杂数据类型数组、队列HashMap、泛型

8.3.2.Hash哈希,映射,键值对

复杂数据类型数组、队列HashMap、泛型 | 学习笔记复杂数据类型数组、队列HashMap、泛型
复杂数据类型数组、队列HashMap、泛型 | 学习笔记复杂数据类型数组、队列HashMap、泛型

8.3.3.根据手机号,查询QQ、微信、钉钉、支付宝、淘宝用户信息。User类型

复杂数据类型数组、队列HashMap、泛型 | 学习笔记复杂数据类型数组、队列HashMap、泛型

8.3.4.手机号查询账户信息

复杂数据类型数组、队列HashMap、泛型 | 学习笔记复杂数据类型数组、队列HashMap、泛型

8.3.5.调用重写方法打印字符串

复杂数据类型数组、队列HashMap、泛型 | 学习笔记复杂数据类型数组、队列HashMap、泛型

9、队列(Queue);

10、树(Tree)。

复杂数据类型数组、队列HashMap、泛型 | 学习笔记复杂数据类型数组、队列HashMap、泛型

Java作为一个编程语言,已经提供了系统预定义的类型,这些类型帮助快速的去书写代码,本质上就是代码重用。

举例:

1.定义数组 长度5,整数类型的数组

复杂数据类型数组、队列HashMap、泛型 | 学习笔记复杂数据类型数组、队列HashMap、泛型

2.求数组中所有元素的和

复杂数据类型数组、队列HashMap、泛型 | 学习笔记复杂数据类型数组、队列HashMap、泛型

3.字符串数组

复杂数据类型数组、队列HashMap、泛型 | 学习笔记复杂数据类型数组、队列HashMap、泛型