编程常用合集,List集合使用详解掌握啦吗?

本文详细介绍了Java中的List接口及其多种实现类,包括ArrayList、LinkedList等,并对比了它们的特点与应用场景,帮助开发者更好地理解并选择合适的List实现。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

我们知道,List是Java编程中经常使用的集合之一,但List到底有哪些不为人知的地方,List为什么被使用得这么多?今天索尔就为大家分析一下关于List的那点事儿。

List本身其实是一个接口,继承自Collection接口,所以List存储元素的特点是单元素,区别于Map(双元素集合),JDK8为List接口提供了10个实现类,供开发人员使用。

为什么提供那么多的实现类呢?因为在实际开发场景下需要根据业务的不同选择不同的实现类来使用,这就要求大家对实现类的特点都要加以掌握,才能在实际的开发中运用自如。有些菜鸟一个ArrayList走天下^!^。大家可以先看看下面我总结的List子类图:

接下来我会给大家对以上几个类进行简要介绍。

1.AbstractList

public abstract class AbstractList<Eextends AbstractCollection<Eimplements List

从源码中可以看到,这个类是抽象类无法进行实例化。该类实现了迭代器和列表迭代器,同时也实现了get(int),set(int, E),add(int, E),remove(int)方法,如果子类有更好的处理方式可以覆盖这些方法。

2.AbstractSequentialList

public abstract class AbstractSequentialList<Eextends AbstractList<E>

此抽象类实现由连续访问数据存储所需的工作(如链表),它实现了对列表的列表迭代器顶部的随机访问方法get(int),set(int index,E element),add(int index,E element)和remove(int index)

3.ArrayList

public class ArrayList<Eextends AbstractList<Eimplements List<E>

此类为主要实现类之一,实际开发过程中经常使用。主要完成可调整大小的集合(基于数组实现),每个ArrayList实例都有一个容量。容量是用于存储列表中的元素的数组大小。请注意此实现线程不安全。

4.AttributeList

public class AttributeList extends ArrayList<Object>

此类是ArryList的子类,是对ArrayList的扩展。表示MBean属性值的列表(MBean参见jdk官方文档)。

5.CopyOnWriteArrayList

public class CopyOnWriteArrayList<Eextends Object implements List<E>, RandomAccessCloneableSerializable

此类是一个线程安全的变体ArrayList,其中所有可变操作(add,set,remove等等)通过对底层数组的最新副本实现。

在多线程情况下使用较频繁。

6.LinkedList

public class LinkedList<Eextends AbstractSequentialList<Eimplements List<E>, Deque<E>, CloneableSerializable

此类基于双向链表实现List接口。实现所有可选列表操作,并允许所有元素(包括null)。

请注意,此实现不同步。

7.RoleList

public class RoleList extends ArrayList<Object>

RoleList表示角色列表(Role对象)。在创建关系时用作参数,并且尝试在关系中设置多个角色。

8.RoleUnresolvedList

public class RoleUnresolvedList extends ArrayList<Object>

RoleUnresolvedList表示RoleUnresolved对象的列表,表示由于在尝试访问(读取或写入)角色时遇到问题,不会从关系中检索到角色。

9.Stack

public class Stack<Eextends Vector<E>

Stack类代表最先进先出(LIFO)堆栈的对象。它扩展了类别Vector与五个操作,允许一个向量被视为堆栈。

设置在通常的push和pop操作,以及作为一种方法来peek在堆栈,以测试堆栈是否为empty的方法,以及向search在栈中的项目的方法在顶部项目和发现多远它是从顶部。

当首次创建堆栈时,它不包含任何项目。

10.Vector

public class Vector<Eextends AbstractList<Eimplements List<E>, RandomAccessCloneableSerializable

此类实现了可扩展的对象数组。像数组一样,它包含可以使用整数索引访问的组件。但是,Vector的大小可以根据需要增长或缩小,以适应在创建之后添加和删除项目。

因操作速度较慢,故基本不适用,但却是线程安全,建议使用ArrayList代替Vector。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

威哥爱编程(马剑威)

你的鼓励是我创作的最大动力!

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值