数据结构----List简介

1. List

在集合框架中,List是一个接口,继承自Collection
在这里插入图片描述

从数据结构的角度来看,List就是一个线性表,即n个具有相同类型元素的有限序列,在该序列上可以执行增删改查以及变量等操作。

1.1 Collection中的方法

Collection也是一个接口,该接口中规范了后序容器中常用的一些方法,具体如下所示:

在这里插入图片描述
Iterable也是一个接口,表示实现该接口的类是可以逐个元素进行遍历的,具体如下:
在这里插入图片描述

1.2 List中的常用方法

List是Java集合框架中的一个接口,它表示一个有序的、可重复的元素集合。List接口继承自Collection接口,并在其基础上添加了一些与索引相关的操作方法。List中提供了很多方法,具体如下:

在这里插入图片描述
常用方法如下:

方法解释
boolean add(E e)尾插 e
void add(int index, E element)将 e 插入到 index 位置
boolean addAll(Collection<? extends E> c)尾插 c 中的元素
E remove(int index)删除 index 位置元素
boolean remove(Object o)删除遇到的第一个 o
E get(int index)获取下标 index 位置元素
E set(int index, E element)将下标 index 位置元素设置为 element
void clear()清空
boolean contains(Object o)判断 o 是否在线性表中
int indexOf(Object o)返回第一个 o 所在下标
int lastIndexOf(Object o)返回最后一个 o 的下标
List< E > subList(int fromIndex, int toIndex)截取部分 list

其他:sort、reverse、shuffle等

2. List的特点

List的特点包括:

  • 有序性:List中的元素按照它们被添加的顺序进行存储,并且可以通过索引访问和操作元素。每个元素都有一个与之关联的索引,从0开始递增。
  • 可重复性:List中可以存储重复的元素,即同一个元素可以出现多次。
  • 动态大小:List的大小是可变的,可以根据需要动态地添加或删除元素。
  • List接口提供了许多常用的方法,使我们能够对集合中的元素进行增加、删除、修改、查找等操作。

一些常用的List实现类包括:

  • ArrayList:基于数组实现的动态数组,支持快速随机访问,但插入和删除操作可能较慢。
  • LinkedList:基于链表实现的双向链表,支持快速的插入和删除操作,但随机访问较慢。
  • Vector:类似于ArrayList,但是是线程安全的,适用于多线程环境。
  • Stack:基于Vector实现的栈数据结构,支持先入后出的操作。

List的灵活性和功能丰富性使得它成为Java中常用的集合类型之一,可以方便地操作和管理有序的元素集合。无论是需要保持元素顺序、支持重复元素,还是进行索引操作,List都是一个很好的选择。

3. List的使用

注意:List是个接口,并不能直接用来实例化。如果要使用,必须去实例化List的实现类。在集合框架中,ArrayList和LinkedList都实现了List接口。

在编程中,一般会使用 List< String > ad = new ArrayList<>(); 的形式来创建 ArrayList 对象,因为这样代码的可读性更好,而且灵活性更高。List 接口是 ArrayList 类的一个父接口,通过使用 List 类型的引用来指向 ArrayList 对象,可以使代码更具有通用性。这样写的好处是,以后如果需要更改为其他类型的 List(如 LinkedList),只需要改变声明的时候的类型,而不需要修改实例化的代码。虽然直接使用 ArrayList< String > ad = new ArrayList<>(); 也是可以的,但是不够灵活,不利于后期代码的维护和扩展。

  • 23
    点赞
  • 23
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值