1、集合架构
2、Collection集合均可用迭代器遍历(只能遍历,不能增删)
(1)、迭代的概念
Collection集合元素通用的获取方法:在获取元素之前, 先判断 集合中有没有元素;如果有,就将这个元素 取出来 , 再继续判断 ,如果还有,就继续取出来、再判断;一直到集合中的所有元素都 全部取出来 。这种方式就是迭代
(2)、Iterator迭代器的使用
注意: Iterator接口,我们 无法直接 使用;需要使用Iterator接口的实现类;
使用步骤: (分为3步)
1)、使用 Collection集合 中的 iterator方法 来获取迭代器的实现对象,使用 Iterator接口 进行接收(多态)
2)、使用 Iterator接口 中的 hasNext()方法 ,来判断还有没有元素
3)、使用 Iterator接口 中的 next()方法 ,来取出集合中的元素
(3)、增强 for循环
注意: 增强 for 循环是 java1.5 之后推出的一种特殊的迭代器
主要用来遍历数组和集合
3、泛型通配符
注意: 泛型是没有继承的概念的
(1)、泛型通配符:? ——> 表示任意的数据类型
(2)、使用方法: 只能 作为方法的参数进行传递;不能在创建对象时使用
(3)、泛型通配符的上限与下限:
上限限定:? extends E:表示使用的泛型只能是 E类型的子类 或 E类型 本身
下限限定:? super E:表示使用的泛型只能是 E类型的父类 或 E类型 本身
4、数据结构类型(5种)
(1)、栈结构: 入口和出口是同一个,造成了压栈的形式;所以是先进后出;类似于子弹夹
(2)、队列结构: 入口和出口相对称,造成了排队的形式;所以是先进先出;类似于排队安检
(3)、数组结构: 数组长度一旦定义就是固定的;数组的地址是连续的,可以根据首地址找到数组。所以数组结构:查询快,增删慢;增删时需要反复的创建数组、销毁数组;所以效率低下
(4)、链表结构: 链表长度不是固定的,每次增删时对于其它元素并没有影响;链表的地址并不是连续的,每次查找都要从头开始;所以链表结构:查询慢,增删快
链表可分为 两类 :(链表中的元素又称为节点)
单向链表:只有一条链子,无法保证顺序
双向链表:有两条链子,可以保证顺序
链表的 节点结构 :
(5)、红黑树结构: