栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

Java LinkedList 教程

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

Java LinkedList 教程

本文介绍Java linkedList数据结构。它常用于实现stack、queue,graph,另外稀疏矩阵的存储,HashMap为了防止hash code冲突也用到。

linkedList 同时实现了List 和 Deque接口并实现了所有可用的方法,并支持元素为null 。

linkedList特性

这里列举最常用的一些特性:

  • 访问元素必须从头或尾开始遍历
  • 不是同步的
  • Iterator 和 ListIterator 迭代器是快速失败模式(即迭代器创建之后,如果list被修改了,则会抛出ConcurrentModificationException异常)
  • 每个元素是一个节点,包括前面和后面节点的引用
  • 维护插入顺序

虽然linkedList 不是同步的,我们可以利用 Collections.synchronizedList 实现同步版本:

List list = Collections.synchronizedList(new linkedList(...));
对比ArrayList

虽然两者都实现了List接口,但语义不同,不同是应用场景不同。

  • 内部结构

    ArrayList底层基于数组按照索引访问的数据结构。提供元素随机访问方式,性能为O(1).

    linkedList按照链表方式存储数据,每个元素于前后元素进行链接,这时搜索操作时间复杂度为 O(n).

  • 操作性能

    linkedList的插入、添加、删除操作比较快,因为不需要扩大数组或更新索引(当增加元素至特定位置),仅引用周边元素会改变.

  • 内存使用

    linkedList消费内存较ArrayList更多,因为其每个节点需要额外存储两个引用(前后节点的引用),ArrayList不需要存储该引用。

使用示例

下面通过一些示例代码展示如何使用linkedList。