数组和集合都是存储数据的容器
数组的特点
数组定义完成后并启动 ,类型确定,长度固定
不适合元素的个数和数据类型不确定的业务场景,更不合适做需要增删数据操作
数组的功能也比较的单一处理数据的能力并不是强大
集合的特点
集合的大小不固定,启动后也会动态变化,类型也可以选择不固定。集合更像气球
集合非常适合元素不能确定,且需要做元素的增删操作 的场景
同时,集合提供的种类特别丰富,功能也是很强大,开发中集合用的更多
几个关于集合和数组的异同
1 数组和集合的元素存储的个数问题
数组定义后类型确定 长度固定
集合类型可以不固定 大小是可以变得
2 数组和集合存储元素的类型问题
数组可以存储基本类型和引用类型的数据
集合只能存储引用数据类型的数据
3 数组和集合适合的场景
数组更适合数据个数和类型确定的场景
集合更适合做数据个数不确定,且要做增删元素的场景,集合种类更多,功能更强大
集合类体系结构
Collection 单列集合,每个元素(数据)只能包含一个值
Map双列集合,每个元素包含两个值(键值对)
Collection集合体系
Collection集合特点
List系列集合 添加的元素是有序、可以重复、有索引的
ArrayList 、LinkedList
Set 系列集合 可添加元素是无序 不重复 无索引
HashSet 无序 不重复 无索引 LinkedHashSet 有序 不重复 无索引
TreeSet 按照大小默认升序排序 不重复 无索引
迭代器遍历概述
遍历就是一个一个的把容器内的元素访问一遍
迭代器在java中的代表Iterator 迭代器是集合的专用的遍历方式
Collection 集合获取迭代器
Iteration
Iteration 中的常用的方法
Boolean hasNext() 询问当前位置是否有元素有返回true 不存在返回false
E next() 获取当前位置的元素 同时将迭代器对象移动到下一个位置 注意防止越界
- Iterator
it = lists.iterator(); -
- while(it.hasNext()){
-
- String ele = it.next();
- System.out.println(ele);
-
- }
、迭代器的默认位置在哪里。
增强for循环‘’ ()数组集合都可遍历
for(元素数据类型 变量名 : 数组或者Collection集合) {
//在此处使用变量即可,该变量就是元素
}
- Collection
list = new ArrayList<>(); - for(String ele : list) {
- System.out.println(ele);
- }
List系列集合特点
ArrayList 、LinkedList 有序 可重复 有索引
有序 : 存储和取出元素顺序一样
有索引 : 课通过操作元素
可重复 :存储的元素可以重复
List集合特有的方法
List集合支持索引 多了许多关于索引的API 其他Collection 的功能List也继承了
List的实现类的底层原理
ArrayList 底层是基于数组实现的 根据查询元素快 删除相对慢
LinkedList 底层基于双链表实现的 查询慢 增删首尾快