1. 定义
- Collection单列集合,每个数据一个值
- Map是双列集合,每个数据两个值
- List 系列集合 :添加的元素是有序的、可重复、有索引。
ArrayList、LinkedList:有序的、可重复、有索引 - Set 系列集合 :添加的元素是无序的、不重复、无索引。
HashList:无序、不重复、无索引
LinkedHashSet: 有序、不重复、无索引
TreeSet: 按照大小默认升序排序
从图中可以看出:
1.List是按存储的顺序排列,是有序的;Set没有按存储的顺序排列,时无序的
2.List可以存储重复的数据;Set不能存储重复的数据
3.List可以通过索引查询数据;Set不可以
2. Collection常用功能
方法名 | 描述 |
---|---|
public boolean add(E e) | 在集合中添加一个元素 |
public boolean remove(E e) | 从集合中移除一个元素 |
public boolean contains(Object obj) | 检查集合中是否包含指定元素 |
public int size | 返回集合中元素的数量 |
public boolean isEmpty | 检查集合是否为空 |
public void clear | 清空集合中的所有元素 |
public Object[] toArray | 将集合转化为数组 |
3. Collection的遍历方式
3.1 迭代器遍历
迭代器是用来便利集合的专用方式
主要核心代码:
Iterator<String> it = names.iterator();
while (it.hasNext()) {
String name = it.next();
System.out.println(name);
}
这段代码的功能是使用迭代器遍历 ArrayList 集合,并打印出集合中的每个元素。
1.创建迭代器:Iterator it = names.iterator(); 创建一个迭代器对象 it,用于遍历 names 集合。
2.遍历集合:使用 while 循环和 it.hasNext() 方法检查迭代器是否还有下一个元素。如果有,进入循环体。
3.获取并打印元素:在循环体内,使用 it.next() 方法获取当前元素,并将其赋值给 String name,然后打印 name。
流程图:
运行结果:
Notice:
-
得到迭代器对象,默认指向当前集合的索引0,以下为理解:
因为我们如果直接点击查看iterator的实现,会进入到Collection的类中,而我们要查看的是ArrayList实现类中的迭代器的实现,所以先通过将Collection names=new ArrayList<>();改写为实现类的方法,如图所示。然后找到具体的iterator的实现类。
由上图中可知,cursor为下一个要返回的元素的索引,根据 Java 的语言规范,类的实例变量如果没有显式初始化,会自动初始化为其类型的默认值。对于 int 类型,默认值是 0,所以默认的索引值为0 -
通过迭代器获取元素不能越界,越界就会出现NoSuchElementException异常,理解
下图中,cursor!=size,判断 cursor 是否等于 size。如果不等于,说明还有元素可以返回,返回 true;否则返回 false,所以不能越界
3.2 增强for循环
for(元素的数据类型 变量名:数组或者集合){
}
- 增强for可以用来遍历集合或者数组
- 增强for本质解释迭代器遍历集合的简化写法