集合进阶(一)-(Collection)-(List)

一、集合体系结构

二、Collection集合概述和使用

概述

  1. 是单例集合的顶层接口,它表示一组对象,这些对象也称为Collection的元素
  2. JDK不提供此接口的任何直接实现,它提供更具体的子接口(如Set和List)实现

创建Collection集合的对象

  1. 多态的形式
  2. 具体的实现类ArrayList

Collection集合常用方法

方法名 说明
boolean add(E e) 添加元素,返回是否成功
boolean remove(Object o) 从集合中移除指定元素
void clear() 清空集合中的元素
boolean contains(Object o) 判断集合中是否存在指定元素
boolean isEmpty() 判断集合是否为空
int size() 集合的长度,也就是集合中的元素个数

Collection集合的遍历

Iterator:迭代器,集合的专用遍历方式

  • Iterator iterator():返回此集合中元素的迭代器,通过集合的iterator()方法得到
  • 迭代器是通过集合的iterator()方法得到的,所以我们说它是依赖集合而存在的

常用方法

  • E next():返回迭代中的下一个元素
  • boolean hasNext():如果迭代具有更多元素,则返回true

案例;Collection集合存储学生对象并遍历

需求:创建一个存储学生对象的集合,存储3个学生对象,使用程序实现在控制台遍历该集合

步骤:

  1. 定义学生类
  2. 创建Collection集合对象
  3. 创建学生对象
  4. 把学生添加到集合
  5. 遍历集合(迭代器)

Student类代码省略

三、List集合

概述

  • 有序集合(也称为序列),用户可以精确控制列表中每个元素的插入位置。用户可以通过整数索引访问元素并搜索列表中的元素
  • 不同于Set集合,列表通常允许重复元素

List集合特点

  • 有序:存储和取出的元素顺序一致
  • 可重复:存储的元素可以重复

List集合特有方法

方法名 说明
void add(int index,E element) 在此集合中的指定位置插入指定的元素
E remove(int index) 删除指定索引处的元素,返回被删除的元素
E set(int index,E element) 修改指定索引处的元素,返回被修改的元素
E get(int index) 返回指定索引处的元素

并发修改异常

  • ConcurrentModificationException

产生原因

  • 迭代器遍历的过程中,通过集合对象修改了集合中的元素,造成了迭代器获取元素中判断预期修改值和实际修改值不一致

解决方案

  • 用for循环遍历,然后拥挤和对象做相应操作即可

列表迭代器ListIterator

通过List集合的listIterator()方法得到,所以说它是List集合特有的迭代器

用于允许程序沿任意方向遍历列表的列表迭代器,在迭代期间修改列表,并获取列表中迭代器的当前位置

常用方法:

方法 描述
E next() 返回迭代中的下一个元素
boolean hasNext() 如果迭代具有更多元素,则返回true
E previous() 返回列表中的上一个元素
boolean hasPrevious() 如果此列表迭代器在相反方向遍历列表时具有更多元素,则返回true
void add(E e) 将指定元素插入列表

四、增强for循环

增强for:简化数组和Collection集合的遍历

  • 实现Iterable接口的类允许其对象成为增强型for语句的目标
  • 它是JDK5后出现的,其内部原理是一个Iterator迭代器

格式

1
2
3
for(元素数据类型 变量名:数组或者Collection集合){
//此处使用变量即可,该变量就是元素
}

范例

1
2
3
4
int[] arr={1,2,3,4,5};
for(int i: arr){
System.out.println(i);
}

请我喝杯咖啡吧~

支付宝
微信