Java LinkedList指南

发布时间:2019-11-20 发布网站:脚本宝典
脚本宝典收集整理的这篇文章主要介绍了Java LinkedList指南脚本宝典觉得挺不错的,现在分享给大家,也给大家做个参考。

1. 介绍

LinkedList是一个双向链表, 实现了ListDeque接口。它实现所有可选的list操作,并且存储对象可以为null

2. 特点

LinkedList具有以下特点:

  • 查到列表中的元素,需要从头至尾的遍历列表
  • 没有同步
  • 它的ITeratorListIterator迭代器是快速失败的(这意味着在迭代器创建之后,如果修改了列表,将抛出一个ConcurrentModificationException)
  • 每个元素都是一个节点,它保留对下一个和前一个节点的引用
  • 维护了插入顺序

虽然LinkedList没有同步,但是我们可以通过调用Collections.synchronizedList方法创建它的同步版本,如:

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

3. 与ArrayList比较

虽然它们都实现了List接口,但它们具有不用的语义,这将影响我们使用哪一个

3.1 结构体

ArrayList是基于索引的数据结构,它提供了对其元素的随机访问,其性能为O(1)。

LinkedList将数据存储为元素列表,并且每个元素都链接到上一个和下一个元素。在这样情况下,其元素搜索的复发度为O(n)。

3.2 操作

LinkedList中的元素进行插入,删除操作更快,因为当元素添加到集合内的某个位置时,不需要调整数组的大小或更新索引,只需更改前后元素的PRenext指针即可。

3.3 内存的使用情况

LinkedList的内存占用比ArrayList更多,因为在每一个接口都需要存储两个引用,一个用于记录前一个元素,一个用于记录后一个元素。而ArrayList中仅需要保持数据和它的索引。

4. 用法

以下是一些代码示例,展示了如何使用LinkedList

4.1 创建