2025/10/25 递归练习 Collection 迭代器遍历 增强for遍历 Lambda表达式遍历 List集合 列表迭代器遍历 数据结构(栈、队列、数组、链表)泛型(继承及其通配符)
练习一:
//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、如果类型不确定,但是能知道以后只能传递某个继承体系中的,就可以使用泛型的通配符(限定类型的范围)






总结


更多推荐
所有评论(0)