文章目录
集合概述
本文内容基于JDK1.8
1.为什么用集合?集合更像气球
-
不知道存放对象的个数
-
与数组相比更加实用灵活
-
更加面向对象,非常适合做元素的增删操作
-
注意:集合中只能存储引用数据类型(String),如果要存储基本类型(如int)数据可以选用包装类(如Integer)。
2.集合适合的场景
- 数据的个数不确定,需要进行增删元素的时候。
3. 集合总结
3.1 数组和集合的元素储存的个数问题
- 数组定义后类型确定,长度固定。
- 集合类型可以不固定,大小是可变的。
3.1 数组和集合储存元素的基本问题
- 数组能储存基本类型int和引用类型的数据。
- 集合只能存储引用数据类型的数据。
3.3数组和集合适合的场景
- 数组适合做数据格式和类型确定的场景。
- 集合适合做,数据个数不确定,且要做增删改查的场景。
4. 集合的体系特点
5.集合对于泛型的支持
-
集合都是支持泛型的,可以再编译阶段约束集合只能操作某种数据类型
-
格式如下
-
Collection< String> lists = new ArrayList<>();
-
Collection< Integer> lists = new ArrayList<>();//储存基本类型使用包装类(不把它当基本数据类型,把它当对象)
5.1总结
1.集合的代表是?
- Collection接口
2.Collection集合分了哪儿大常用集合体系?
- List系列集合:添加的元素是有序、可重复、有索引的
- Set系列集合:添加的元素是无序、不重复、无索引的
3.如何约定集合存储书记的类型,需要注意什么?
- 集合支持泛型
- 集合和泛型不支持基本类型(如int),只支持引用数据类型。
6.Collection接口常用方法
Collection 接口用于表示任何对象或元素组。常规方式处理一组元素时,就使用这一接口。Collection 在前面的大图也可以看出,它是List和Set 的父类。并且它本身也是一个接口。它定义了作为集合所应该拥有的一些方法。如下:
add(E e) | 确保此 collection 包含指定的元素(可选操作) |
clear() | 移除此 collection 中的所有元素(可选操作) |
contains(Object o) | 如果此集合包含指定的元素,则返回 true |
isEmpty() | 如果此集合不包含元素,则返回 true |
iterator() | 返回此集合中的元素的迭代器 |
remove(Object o) | 从该集合中删除指定元素的单个实例(如果存在)(可选操作) |
size() | 返回此集合中的元素数。 |
toArray() | 返回一个包含此集合中所有元素的数组 |
7.集合的遍历
7.1 迭代器遍历概述
-
遍历就是一个一个的把容器中的元素访问一遍。
-
迭代器在Java中的代表是Iterator,迭代器是结合的专用遍历方式。
-
Iterator< String > it = List.i(这个i是小写)terator(); //其中List是一个集合对象
7.1.1迭代总结
1.迭代器如果取元素越界会出现什么问题?
- 会出现NoSuchElementException异常。
2.迭代器的默认位置在哪?
- Iterator< E>iterator(): 得到迭代器对象,默认指向当前集合的索引0。
3.迭代器不能遍历数组
7.2 增强for循环
-
增强for循环:既可以遍历集合,也可以遍历数组(1.增强for可以遍历哪些容器?)
-
JDK5之后出现的,内部原理是一个Iterator迭代器,遍历集合相当于是迭代器的简化写法。
-
实现Iterator接口的类才可以使用迭代器和增强for,Collection接口已经实现了Iterator接口。
-
(2.增强for的关键是记住它的遍历格式)
-
问题,for和forEach(增强for循环)有什么区别
-
forEach中不能修改元素(添加或删除操作),适用于只进行数组或集合的遍历。
-
for比较灵活,可以增改元素,for在复杂循环中效率高。
-
7.3 Lambda表达式遍历集合
- 得益于JDK 8开始的新技术Lambda表达式,提供了一种更简单、更直接的编辑集合的方式。
- Collection结合Lambda遍历的API
8.集合中存储的是元素的什么信息?
- 集合中存储的是元素对象的地址