类集设置的目的
- 对象数组存在一些问题,其中最大的问题在于数组中的元素个数是固定的,不能动态的扩充大大小,最早的时候可以通过链表实现一个动态对象数组。但是操作麻烦,所以java为方便操作各个数据结构,引入了类集的概念
- 有时候可以把类集称为java对数据结构的实现
- 类集中有最大的几个操作接口:Collection、Map、Iterator(迭代器)
补充
- 抽象数据类型:表示数学中抽象出来的一些操作的集合
- 内存结构:内存中的结构,如:struct、特殊内存块等等
链表
-
链表是由一组不必相连(可以连续也可以不连续)的内存结构(节点),按特定的顺序连接在一起的抽象数据类型
-
链表优缺点:
- 优点:
- 空间没有限制
- 插入删除元素很快
- 缺点:
- 存取速度慢
- 优点:
-
链表 和数组的区别:
- 数组
- 数组是一种连续存储性结构,元素类型相同,大小相等
- 优点:
- 存储速度快
- 缺点:
- 事先必须知道数组的长度
- 插入删除元素很慢
- 空间通常有限
- 需要大块连续的内存
- 插入删除元素的效率很低
- 链表是离散存储线性结构
- n个节点离散分配,彼此通过指针相连,每个节点只有一个直接前驱,只有一个直接后继。首节点没有前驱节点,尾结点没有后继节点
- 数组
链表 分类:
-
单链表:由各个内存结构通过一个 Next 指针链接在一起组成,每一个内存结构都存在后继内存结构(链尾除外),内存结构由数据域和 Next 指针域组成
class Node{ Object data; Node next; }
-
双向链表:双向链表 [Double Linked List]:由各个内存结构通过指针 Next 和指针 Prev 链接在一起组成,每一个内存结构都存在前驱内存结构和后继内存结构(链头没有前驱,链尾没有后继),内存结构由数据域、rev 指针域和 Next 指针域组成。
-
循环链表
-
单向循环链表:单向循环链表 [Circular Linked List] : 由各个内存结构通过一个指针 Next 链接在一起组,一个内存结构都存在后继内存结构,内存结构由数据域和 Next 指针域组成。
-
双向循环链表:双向循环链表 [Double Circular Linked List] : 由各个内存结构通过指针 Next 和指针
Prev 链接在一起组成,每一个内存结构都存在前驱内存结构和后继内存结构,内存结构由数据域、Prev 指针域和 Next 指针域组成。
-
二叉树
class Node{
Object data;
Node left;
Node right;
}