【Java】集合中单列集合详解(一):Collection与List


目录

引言

一、Collection接口

[1.1 主要方法](#1.1 主要方法)

[1.1.1 添加元素](#1.1.1 添加元素)

[1.1.2 删除元素](#1.1.2 删除元素)

[1.1.3 清空元素](#1.1.3 清空元素)

[1.1.4 判断元素是否存在](#1.1.4 判断元素是否存在)

[1.1.5 判断是否为空](#1.1.5 判断是否为空)

[1.1.6 求取元素个数](#1.1.6 求取元素个数)

[1.2 遍历方法](#1.2 遍历方法)

[1.2.1 迭代器遍历](#1.2.1 迭代器遍历)

[1.2.2 增强for遍历](#1.2.2 增强for遍历)

[1.2.3 Lambda表达式遍历](#1.2.3 Lambda表达式遍历)

[1.2.4 应用场景](#1.2.4 应用场景)

二、List接口

[2.1 新增方法](#2.1 新增方法)

[2.1.1 指定位置添加元素](#2.1.1 指定位置添加元素)

[2.1.2 删除指定位置元素](#2.1.2 删除指定位置元素)

[2.1.3 修改指定位置元素](#2.1.3 修改指定位置元素)

[2.1.4 返回指定位置元素](#2.1.4 返回指定位置元素)

[2.2 遍历方法](#2.2 遍历方法)

[2.2.1 列表迭代器遍历](#2.2.1 列表迭代器遍历)

[2.2.2 普通for遍历](#2.2.2 普通for遍历)

[2.2.3 应用场景](#2.2.3 应用场景)

结语


引言

在Java中,集合框架(Java Collections Framework)是一组设计用来操作对象集合的类和接口。它提供了一种统一的方式来存储和操作对象集合。集合框架主要包括两大类:单列集合(Single-Column Collections)和双列集合(Two-Column Collections,比如Map)。本文将详细讲解单列集合中的两个关键接口:Collection和List。


一、Collection接口

Collection接口是Java单列集合框架的根接口,它定义了一系列用于操作集合的通用方法。所有单列集合类,包括ListSet,都实现了这个接口。


1.1 主要方法

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

1.1.1 添加元素

Collection是一个接口,不能之间创建它的对象,需要创建其实现类的对象来验证其方法。

java 复制代码
// 1.创建集合
Collection<String> coll = new ArrayList<>();

// 2.添加数据
coll.add("zhangsan");

// 3.打印
System.out.println(coll);

1.1.2 删除元素
java 复制代码
// 创建集合
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 清空元素
java 复制代码
// 创建集合
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 判断元素是否存在

代码紧接上文:

java 复制代码
// 判断zhangsan这个元素在集合中是否存在
System.out.println(coll.contains("zhangsan"));

注意:集合中contains()方法底层是依赖equals()方法判断是否存在;因此如果集合中存储的是自定义类,一定要重写equals()方法之后contains()方法才能正确判断元素是否存在


1.1.5 判断是否为空

代码紧接上文:

java 复制代码
//判断集合中是否为空
System.out.println(coll.isEmpty()); //false

1.1.6 求取元素个数

代码紧接上文:

java 复制代码
//求取集合中的元素个数
System.out.println(coll.size());

1.2 遍历方法


1.2.1 迭代器遍历

遍历格式:

java 复制代码
Iterator<E> it = 集合名称.iterator();
while(it.hasNext()){
    集合元素类型 变量名 = it.next();
    System.out.println(变量名);
}

注意:

①循环中不能使用集合的添加或删除方法(可以使用迭代器的删除方法)

②循环只用一次next()方法(使用多次可能会导致NoSuchElementException的异常)


1.2.2 增强for遍历

JDK5以后出现,其内部原理就是一个Iterator迭代器。

遍历格式:

java 复制代码
for(数据类型 变量名 : 集合/数组){

}

注意:

①单列集合以及数组才能用增强for循环

②在增强for循环中修改其变量的值,不会改变集合中原来的数据


1.2.3 Lambda表达式遍历

JDK8以后出现,使用foreach方法。

遍历格式:

java 复制代码
集合名称.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 指定位置添加元素
java 复制代码
// 创建集合
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 删除指定位置元素

代码紧接上文:

java 复制代码
//删除索引位置为0的元素
String s = list.remove(0);

注意:在调用方法时,如果方法出现重载,优先调用++实参与形参类型一致++的方法


2.1.3 修改指定位置元素

代码紧接上文:

java 复制代码
String result = list.set(0, "abc");
System.out.println(result);
System.out.println(list);

修改指定索引处的元素,返回被修改的元素;被替换的那个元素,在集合中就不存在了。


2.1.4 返回指定位置元素

代码紧接上文:

java 复制代码
//返回索引为0的元素
String s = list.get(0);
System.out.println(s);

2.2 遍历方法

相较与Collection接口,List接口多了两种遍历方法。


2.2.1 列表迭代器遍历

遍历格式:

java 复制代码
ListIterator<E> it = 集合名称.ListIterator();
while(it.hasNext()){
    集合元素类型 变量名 = it.next();
    System.out.println(变量名);
}

注:与迭代器遍历相比,在遍历的过程中可以添加元素


2.2.2 普通for遍历

size方法跟get方法还有循环结合的方式,利用索引获取到集合中的每一个元素

java 复制代码
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的子接口,支持基于索引的操作,允许存储重复元素,并且是有序的。

相关推荐
汪洪墩7 分钟前
【Mars3d】设置backgroundImage、map.scene.skyBox、backgroundImage来回切换
开发语言·javascript·python·ecmascript·webgl·cesium
云空12 分钟前
《QT 5.14.1 搭建 opencv 环境全攻略》
开发语言·qt·opencv
Yvemil713 分钟前
《开启微服务之旅:Spring Boot 从入门到实践》(三)
java
Anna。。14 分钟前
Java入门2-idea 第五章:IO流(java.io包中)
java·开发语言·intellij-idea
.生产的驴36 分钟前
SpringBoot 对接第三方登录 手机号登录 手机号验证 微信小程序登录 结合Redis SaToken
java·spring boot·redis·后端·缓存·微信小程序·maven
我曾经是个程序员37 分钟前
鸿蒙学习记录
开发语言·前端·javascript
爱上语文38 分钟前
宠物管理系统:Dao层
java·开发语言·宠物
王ASC1 小时前
SpringMVC的URL组成,以及URI中对/斜杠的处理,解决IllegalStateException: Ambiguous mapping
java·mvc·springboot·web
是小崔啊1 小时前
开源轮子 - Apache Common
java·开源·apache
因我你好久不见1 小时前
springboot java ffmpeg 视频压缩、提取视频帧图片、获取视频分辨率
java·spring boot·ffmpeg