练习一:

//144只

解法一:

解法二:递归思想

练习二:(反向递归)

练习三:

集合:单列集合和双列集合

单列集合:

Collection:单列集合的祖宗接口,它的功能是全部的单列集合都可以继承使用

接口不能直接创建它的对象,只能创建它实现类(ArrayList)的对象

如果往List系列集合中添加数据,那么方法永远返回true,因为List系列的集合是允许元素重复的

如果往Set系列集合中添加数据,如果当前要添加的元素不存在,方法返回true;如果当前要添加的元素已经存在,方法返回False,因为Set系列的集合是不允许元素重复的

Collection的遍历方式(Set系列没有索引,不能用for循环)

迭代器遍历:不依赖索引

总结

增强for遍历(所有单列集合和数组)

快速生成方式:集合名字+for

Lambda表达式遍历

总结

List集合的特有方法

Collection的方法List都继承了

List集合有索引,所以多了很多索引相关的方法

List集合的遍历方式:迭代器遍历、列表迭代器遍历、增强for遍历、Lambda表达式遍历、普通for循环遍历(List集合存在索引)

1)迭代器

2)增强for

3)Lambda表达式

4)普通for循环

5)列表迭代器

5种迭代器对比

数据结构:计算机底层组织、存储数据的方式

概述:

1)数据结构(栈):后进先出,先进后出

数据进入浅模型的过程称为:压/进栈

数据离开浅模型的过程称为:弹/出栈

2)数据结构(队列):先进先出,后进后出

3)数据结构(数组):查询速度块、删除效率低、添加效率低

4)数据结构(链表)

链表中的结点是独立的对象,再内存种是不连续的,每个结点包含数据值和下一个结点的地址

链表查询慢,无论查询哪个数据都要从头找

链表增删相对快

ArrayList集合底层原理

LinkedList集合

泛型深入

泛型:JDK中引入的特性,可以在编译阶段约束操作的数据类型,并进行检查

泛型格式:<数据类型>

注意:泛型只能支持引用数据类型

在没有泛型时,集合怎么存储数据

如果没有给集合指定类型,默认为所有的数据类型都是object类型,此时可以在集合中添加任意的数据类型。这样带来的一个坏处就是我们在获取数据的时候,无法使用它的特有行为。此时退出了泛型,可以在添加数据的时候就把类型进行统一。而且在获取数据的时候,也省去了强转,非常方便。

泛型的好处

java中的泛型是伪泛型

泛型细节

泛型还可以在很多地方进行定义:类后面(泛型类)、方法上面(泛型方法)、接口后面(泛型接口)

1)泛型类:

当编写一个类的时候,不确定类型,那么这个类就可以定义为泛型类

2)泛型方法:方法中形参类型不确定

:可变参数(改变添加参数的个数)

3)泛型接口:

如何使用一个带泛型的接口:

方式一:

方式二:

泛型的继承和通配符

泛型不具备继承性,但是数据具备继承性

应用场景:

1、如果在i当以类、方法、接口,如果类型不确定,就可以定义泛型类、泛型方法、泛型接口

2、如果类型不确定,但是能知道以后只能传递某个继承体系中的,就可以使用泛型的通配符(限定类型的范围)

总结

更多推荐