目录
引言
一、Collection接口
1.1 主要方法
1.1.1 添加元素
1.1.2 删除元素
1.1.3 清空元素
1.1.4 判断元素是否存在
1.1.5 判断是否为空
1.1.6 求取元素个数
1.2 遍历方法
1.2.1 迭代器遍历
1.2.2 增强for遍历
1.2.3 Lambda表达式遍历
1.2.4 应用场景
二、List接口
2.1 新增方法
2.1.1 指定位置添加元素
2.1.2 删除指定位置元素
2.1.3 修改指定位置元素
2.1.4 返回指定位置元素
2.2 遍历方法
2.2.1 列表迭代器遍历
2.2.2 普通for遍历
2.2.3 应用场景
结语
引言
在Java中,集合框架(Java Collections Framework)是一组设计用来操作对象集合的类和接口。它提供了一种统一的方式来存储和操作对象集合。集合框架主要包括两大类:单列集合(Single-Column Collections)和双列集合(Two-Column Collections,比如Map)。本文将详细讲解单列集合中的两个关键接口:Collection和List。
一、Collection接口
Collection接口是Java单列集合框架的根接口,它定义了一系列用于操作集合的通用方法。所有单列集合类,包括List和
Set,都实现了这个接口。
1.1 主要方法
方法名 | 说明 |
---|---|
boolean add(E e) | 添加元素 |
boolean remove(E e) | 把给定的对象从当前集合中移除 |
void clear() | 清空集合中的元素 |
boolean contains(Object o) | 判断集合中是否存在指定的元素 |
boolean isEmpty() | 判断集合是否为空 |
int size() | 集合的长度,也就是集合中元素的个数 |
1.1.1 添加元素
Collection是一个接口,不能之间创建它的对象,需要创建其实现类的对象来验证其方法。
// 1.创建集合
Collection<String> coll = new ArrayList<>();
// 2.添加数据
coll.add("zhangsan");
// 3.打印
System.out.println(coll);
1.1.2 删除元素
// 创建集合
Collection<String> coll = new ArrayList<>();
// 添加数据
coll.add("zhangsan");
coll.add("lisi");
coll.add("wangwu");
// 打印
System.out.println(coll);
// 删除元素
coll.remove("lisi");
// 打印
System.out.println(coll);
第二次打印相较于第一次打印会少一个元素:"lisi"。
1.1.3 清空元素
// 创建集合
Collection<String> coll = new ArrayList<>();
// 添加数据
coll.add("zhangsan");
coll.add("lisi");
coll.add("wangwu");
// 打印
System.out.println(coll);
// 清空元素
coll.clear();
// 打印
System.out.println(coll);
第一次打印:[zhangsan, lisi, wangwu]。
第二次打印:[]。
1.1.4 判断元素是否存在
代码紧接上文:
// 判断zhangsan这个元素在集合中是否存在
System.out.println(coll.contains("zhangsan"));
注意:集合中contains()方法底层是依赖equals()方法判断是否存在;因此如果集合中存储的是自定义类,一定要重写equals()方法之后contains()方法才能正确判断元素是否存在
1.1.5 判断是否为空
代码紧接上文:
//判断集合中是否为空
System.out.println(coll.isEmpty()); //false
1.1.6 求取元素个数
代码紧接上文:
//求取集合中的元素个数
System.out.println(coll.size());
1.2 遍历方法
1.2.1 迭代器遍历
遍历格式:
Iterator<E> it = 集合名称.iterator();
while(it.hasNext()){
集合元素类型 变量名 = it.next();
System.out.println(变量名);
}
注意:
①循环中不能使用集合的添加或删除方法(可以使用迭代器的删除方法)
②循环只用一次next()方法(使用多次可能会导致NoSuchElementException的异常)
1.2.2 增强for遍历
JDK5以后出现,其内部原理就是一个Iterator迭代器。
遍历格式:
for(数据类型 变量名 : 集合/数组){
}
注意:
①单列集合以及数组才能用增强for循环
②在增强for循环中修改其变量的值,不会改变集合中原来的数据
1.2.3 Lambda表达式遍历
JDK8以后出现,使用foreach方法。
遍历格式:
集合名称.forEach((参数) -> {
//方法体
}
);
1.2.4 应用场景
迭代器遍历:在遍历过程需要删除元素
增强for遍历:仅仅想遍历
Lambda表达式遍历:仅仅想遍历
二、List接口
List接口是Collection接口的一个子接口,它继承并扩展了Collection接口的所有方法。List集合是有序的集合,允许存储重复的元素,并且可以通过索引访问元素。
2.1 新增方法
方法名 | 说明 |
---|---|
void add(int index,E element) | 在此集合中的指定位置插入指定的元素 |
E remove(int index) | 删除指定索引处的元素,返回被删除的元素 |
E set(int index,E element) | 修改指定索引处的元素,返回被修改的元素 |
E get(int index) | 返回指定索引处的元素 |
2.1.1 指定位置添加元素
// 创建集合
List<String> list = new ArrayList<>();
// 添加数据
list.add("zhangsan");
list.add("lisi");
list.add("wangwu");
// 打印
System.out.println(list);
// 指定位置添加元素
list.add(0, "laoliu");
// 打印
System.out.println(list);
在此集合中的指定位置插入指定的元素,原来位置上的元素往后挪一个索引。
2.1.2 删除指定位置元素
代码紧接上文:
//删除索引位置为0的元素
String s = list.remove(0);
注意:在调用方法时,如果方法出现重载,优先调用实参与形参类型一致的方法
2.1.3 修改指定位置元素
代码紧接上文:
String result = list.set(0, "abc");
System.out.println(result);
System.out.println(list);
修改指定索引处的元素,返回被修改的元素;被替换的那个元素,在集合中就不存在了。
2.1.4 返回指定位置元素
代码紧接上文:
//返回索引为0的元素
String s = list.get(0);
System.out.println(s);
2.2 遍历方法
相较与Collection接口,List接口多了两种遍历方法。
2.2.1 列表迭代器遍历
遍历格式:
ListIterator<E> it = 集合名称.ListIterator();
while(it.hasNext()){
集合元素类型 变量名 = it.next();
System.out.println(变量名);
}
注:与迭代器遍历相比,在遍历的过程中可以添加元素
2.2.2 普通for遍历
size方法跟get方法还有循环结合的方式,利用索引获取到集合中的每一个元素
for (int i = 0; i < list.size(); i++) {
//i:依次表示集合中的每一个索引
String s = list.get(i);
System.out.println(s);
}
2.2.3 应用场景
迭代器遍历:在遍历过程中需要删除元素
列表迭代器:在遍历过程中需要添加或删除元素
增强for遍历:仅仅只是遍历
Lambda表达式遍历:仅仅只是遍历
普通for遍历: 在遍历过程中需要操作索引
结语
Collection接口是Java集合框架的根接口,提供了基本的集合操作。
List接口是Collection的子接口,支持基于索引的操作,允许存储重复元素,并且是有序的。