java Class LinkedList

此文是目前本人对 LinkedList 的认识与理解,随着本人技术的成长,我将不断完善对它的理解与使用。

LinkedList 是接口 Deque 的4个重要实现类之一。首先,看一下它的定义,

public class LinkedList<E>

extends AbstractSequentialList<E>

implements List<E>, Deque<E>, Cloneable, java.io.Serializable

类型参数:

E - 在此集合中含有的元素的类型

此类实现的所有接口:

Serializable, Cloneable, Iterable<E>, Collection<E>, Deque<E>, List<E>, Queue<E>

下面就一步步了解LinkedList,

​​​​​​​可包含元素

LinkedList是 List 和 Deque 接口的双向链表实现。此类实现了所有可选列表操作,并允许所有元素(包括元素可为 null)。

        所有操作都按照双向链表的特性执行。 索引到列表中的操作将从开头或结尾遍历列表,以更接近指定索引的为准。

线程安全性

请注意,LinkedList的实现不是线程同步的。如果多个线程同时访问同一个链表,并且至少有一个线程在结构上修改了链表,则必须从外部对修改操作进行线程同步。(结构修改是添加或删除一个或多个元素的任何操作;仅设置元素的值不是结构修改。)这通常是通过同步一些自然封装列表的对象来完成的。如果不存在这样的对象,则应使用 Collections.synchronizedList 方法“包装”该列表。这最好在创建时完成,以防止对列表的意外不同步访问,例如:

        List list = Collections.synchronizedList(new LinkedList(...));

由此类的iterator 和 listIterator 方法返回的迭代器是快速失败的:如果列表在迭代器创建后的任何时候在结构上被修改,除了通过迭代器自己的删除或添加方法之外,迭代器将会抛出 ConcurrentModificationException。因此,面对并发修改,迭代器快速而干净地失败,而不是冒着在未来不确定的时间,出现任意的、非确定性的行为的风险。

但是,请注意,它不能保证迭代器的快速失败行为,因为一般来说,在存在不同步的并发修改的情况下,不可能做出任何硬保证。快速失败的迭代器会尽最大努力抛出 ConcurrentModificationException,但不能保证百分之百。因此,编写一个依赖于这个异常的正确性的程序是不可能做到的(错误的):迭代器的快速失败行为应该只用于检测错误。

此类也是 Java 集合框架 ( Java Collections Framework) 的一个成员。

最后,我们看一下此类的一个应用:

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值