容器、集合、数据结构
数据结构:存储、组织数据的方式
一、经典的数据结构
增删改查
1、线性数据结构
(1)数组
a、增加一个元素,如果在下标位0的位置,原有的元素都需要网后挪
若果在最后的位置加一个元素,其他的元素不动 ,直接在后面加。
如果实在数组中间加,移动后面的元素即可。
b、删除一个元素,如果在下标位0的位置,原有的元素都需要网前挪
若果在最后的位置加一个元素,其他的元素不动,直接在最后删。
如果实在数组中间删,移动后面的元素即可。
c、修改一个元素,给定要修改的索引,直接改就可以,如果没给定,
需要查找,查找复杂度根据不同的查找算法来定。
d、查找一个元素,如果给定一个索引,直接找到,
如果没给定,需要查找,查找复杂度根据不同的查找算法来定。
(2)链表
a、增加一个元素、把前一个元素的地址区域存储新元素的地址,把新元素的地址区域存储后一个元素的地址即可,不用移动任何元素。
b、删除一个元素,把前一个元素的地址区域存储后一个元素的地址,拿掉要去掉的元素。
c、修改一个元素,从表头查找,找到再修改
d、查找一个元素,先从表头查找、一个元素一个元素看
双向列表
队列
先进先出(FIFO)
单向队列
双向队列
栈
先进后出
二、集合
1、集合相对于数组得有点
(1)长度可变
(2)java官方提供了一系列增删改查一系列方法,帮助程序员操作·
(3)add 添加不可跳过没有数据的元素添加
addALL 把其他集合的元素全部添加到本集合里面
Clear 清除所有集合内容
Contains(元素内容)检验集合中是否包含某元素,返回true和false
indexof(元素内容)元素第一次出现的位置
lastindexof 最后一次出现的位置
isEmpty 和 null 的区别 检测集合是不是空的,输出为true
remove 删除根据索引或者内容,(也可以根据索引批量删除)有问题,集合长度缩短1,可以用变量接受,他是有返回值的,形态list.remove();
set(需要修改的索引)替代指定索引的元素。
toAarry 返回成为Object类型的数组
containsALL 检测集合1中有没有集合2中得全部元素
removeALL 删除集合1中得所有集合2中得全部元素
retainALL 求集合一和集合二中得交集
二、List集合有序可重复
序:指存入的顺序和存放的顺序
三、遍历集合
1、普通for
2、增强for
3、Iterable (可迭代的)
Iterator迭代器
四、泛型
限制了可以往集合中添加元素的类型
五、ArrayList和LinkedList
查询的多,增删少,用ArrayList
查询的少、增删的多、用LinkedList
可以不断的更改类型
以上写法生动形象的体现了程序员的高瞻远瞩
六、Set无序不可重复
存储的数据没有顺序
七、Set一般用于存放id、账号这类不允许重复的信息
八、哈希表和散列地址