1 数组封装
1.1 需求
数组的操作 不能添加删除 如果添加删除的话需要更新数组 创建新的数组
复制数组或者元素移位麻烦 时间开销大 空间开销大
因此对添加删除这类操作封装
2 集合
2.1概述
java集合是使程序能够存储和操作元素不固定的一组数据所有java集合类都位于
java.util包中
如果存放基本类型 会自动装箱成对应的包装类
2.2继承体系
Collection 集合 两个直接子接口List Set
List特性 有序可重复
Set特性 无序不重复
LIst子类
Arraylist 自层是数组 查询和更改效率极高
Vector 底层是双向链表 添加删除效率高
Set
HashSet 自层是散列表
TreeSet 底层是二叉树
2.3Collection
集合的父类 里面的方法所有集合的子类都会有
2.3.1 常用方法
2.3.2 迭代器
迭代器:主要是做遍历操作 使用迭代器可以屏蔽数据结构之间的差异性
* hasNext:判断是否由元素 作为遍历的终止条件
* next 返回下一个元素
* remove 删除这个元素(注意 使用迭代器时候 如果要删除元素必须使用迭代器的remove方法)
* 迭代器一旦生成 集合不能修改 否则需要重新生成迭代器iterator()
2.3.3注意
contains(Object o)判断是否包含某个元素
remove(Object o) 删除指定元素
这两个方法底层都会调用equals方法比较
2.4 forEach
增强for循环 forEach是迭代器的简写方式 但是一样不能
* 修改集合 否则会报错
2.5 LIst
List 有序可重复
* 有序: 先后顺序 先到先得队列 添加顺序跟取出顺序一样
* 可重复 可以添加重复数据
* ArrayList 底层是Object数组 所以查询跟修改效率极高
* LinkList 底层是双向链表 随机添加和删除效率极高
2.5.1 ArrayList
使用
2.5.2 LinkedList
使用方法跟ArrayList一样
虽然底层是双向链表但是某些方法的索引依然可以使用