介绍:

LinkedList是由节点组成的线性数据结构。 在单链列表中,每个节点包含数据和引用。 在此,参考部分引用链表中的下一个节点。

另一方面,在双链表中,我们具有指向上一个和下一个节点的数据和引用。 Java提供了LinkedList实现– java.util.LinkedList <T>,该实现与双向链表一起使用。 此类从AbstractList类继承,并实现List <T>Deque <T>接口。 在本快速教程中,我们将学习如何使用Java中的LinkedList类。

构造一个

我们可以通过以下方式之一实例化Java中的链表:

Java

LinkedList<Integer> intList = new LinkedList<>();LinkedList<Integer> intList1 = new LinkedList<>(intList);

即此类提供了两个构造函数:

  • LinkedList():创建一个空的链表
  • LinkedList(Collection c):创建一个链表,并以c的内容为其元素对其进行初始化

添加元素:

要将元素添加到LinkedList ,我们可以使用List <T>接口中add()方法的风格。 我们还可以使用addFirst()addLast()将元素分别添加到开头或结尾。

Java

intList.add(1);  // [1]
intList.addFirst(2); // [2, 1]
intList.addLast(3); // [2, 1, 3]

删除元素:

同样,要删除项目,我们可以从List接口使用remove(index),remove(obj)方法。 否则,我们也可以选择removeFirst()removeLast()方法:

Java

int firstElement = intList.removeFirst();
int lastElement = intList.removeLast();

这些方法既删除又返回删除的值。

Java LinkedList类还提供removeFirstOccurrence(Object obj)removeLastOccurrence(Object obj)方法,以分别删除给定值的第一次出现和最后一次出现。 如果列表中不存在此类值,则这些方法将返回false

boolean removed = intList.removeFirstOccurrence(1);

查询元素:

LinkedList类中有getFirst()getLast()方法,用于查询链接列表的第一个或最后一个元素:

Java

int firstElement = intList.getFirst();
int lastElement = intList.getLast();

由于这是一个双向链接的列表实现,因此getFirst()getLast()都是恒定时间操作。

如果我们知道要检索的元素的索引,则还可以使用List接口的get(int index)方法:

Java

int elementAtIndex1 = intList.get(1);

遍历

就像其他任何形式的列表一样,我们将遍历链接列表:

Java

//Using a for loop
for(int num : intList) {System.out.println(num);
}//Using iterator
ListIterator itr = intList.listIterator();
while(itr.hasNext()) {System.out.println(itr.next());
}//Using forEach construct
intList.forEach( value -> System.out.println(value); );

让我们概述一下Java LinkedListArrayList类之间的区别:

链表 数组列表
使用双向链接列表表示 使用动态数组的概念
实现两个列表

和德克

介面

只实施清单

接口

不适合随机访问 非常适合随机访问。 如果我们知道索引,则只需要O(1)时间即可检索
在Java链表的开头和结尾处进行O(1)插入/删除 将元素插入ArrayList可能会导致调整后备数组的大小,因此摊销成本为O(n)。
同样,在ArrayList的开头插入将需要我们将所有元素向右移动一个位置。
存储对上一个和下一个节点的引用的内存开销 无需存储其他信息

随意在本文中了解有关ArrayList的更多信息。 Java LinkedList中还提供了从List <T>接口继承的ArrayList类中的所有方法。

结论:

在本快速教程中,我们探讨了Java LinkedList类的一些最受欢迎的方法。 我们还介绍了Java ArrayListLinkedList之间的区别。

成为第一个发表评论的人。

翻译自: https://www.javacodegeeks.com/2019/03/linkedlist-java.html

Java中的LinkedList相关推荐

  1. Java LinkedList – Java中的LinkedList

    Java LinkedList is an implementation of the List and Deque interfaces. It is one of the frequently u ...

  2. java中的LinkedList(链表)与ArrayList(动态数组):(1)简单辨析

    一.数组的缺点(为什么需要引入JAVA集合): 数组不是面向对象的,存在明显的缺陷,集合弥补了数组的缺点,比数组更灵活更实用,而且不同的集合框架类可适用不同场合. 首先数组可以存放基本数据类型和对象, ...

  3. java中的LinkedList(链表)与ArrayList(动态数组):(2)尝试简单实现LinkedList

    一.对于LinkedList需要方法的简单分析 从简图中可以看出,要完成对链表的简单实现,首先应先具有一个用于创造节点对象的Node类,在Node类中应至少具有两个属性: (1).用于保存本节点数据的 ...

  4. Java中的queue和deque

    2019独角兽企业重金招聘Python工程师标准>>> 1.Queue 队列, 一种常用的数据结构,可以将队列看做是一种特殊的线性表,该结构遵循的先进先出原则.Java中,Linke ...

  5. Java中的一些零星容易被忽略的API(及时补充)

    关于Java中的Arrays.copyOfRange()方法 要使用这个方法,首先要import java.util.*; Arrays.copyOfRange(T[]original,int fro ...

  6. 如何在 Java 中正确使用 wait, notify 和 notifyAll – 以生产者消费者模型为例

    欢迎支持笔者新作:<深入理解Kafka:核心设计与实践原理>和<RabbitMQ实战指南>,同时欢迎关注笔者的微信公众号:朱小厮的博客. wait, notify 和 noti ...

  7. Java集合之LinkedList

    上一篇写的是ArrayList,这一篇写一下LinkedList. 开宗明义,因为Vector已经被废弃了,所以list家族只剩下ArrayList和LinkedList两兄弟了,这里直接对比一下二位 ...

  8. java中的Queue队列的用法

    大家好,欢迎来到雄雄的小课堂,今天给大家分享的是"java中的Queue队列的用法" 前言:好多人对Queue不是很熟悉,毕竟平时也不怎么用,遇到集合要么List要么map这些常用 ...

  9. Java中的queue和deque对比详解

    队列(queue)简述 队列(queue)是一种常用的数据结构,可以将队列看做是一种特殊的线性表,该结构遵循的先进先出原则.Java中,LinkedList实现了Queue接口,因为LinkedLis ...

最新文章

  1. python怎么加载图片-怎样用python加载dicom图片
  2. 小白学python买什么书-书单狗 篇一:小白学Python,到底要看多少书?
  3. 圆周率前100位记忆(房屋地点桩法)
  4. 王昊奋 | 从聊天机器人到虚拟生命:AI技术的新机遇
  5. 灰色关联度分析_数学建模|关联分析之术|灰度预测模型预备知识
  6. java堆排序递归代码,无原理版,比较好理解
  7. Linux 下安装与设置Vim编辑器
  8. 秒搜神器everything背后的索引原理
  9. 全国高校计算机能力挑战赛真题(一)
  10. android 开发之activity 启动流程《一》
  11. 如何判断三极管的集电极,基极和发射极?
  12. @hapi/joi@17.1.0和express-jwt使用问题
  13. Ubuntu系统关闭搜狗输入法Shift切换中英文
  14. 计算机主板桥烧坏了怎么办,经验:快速判断主板南、北桥是否损坏
  15. @Aspect 用法
  16. 给密码加盐是什么东西?
  17. 时间序列分析深入总结(一)(附代码)
  18. 操作系统——进程管理(一文弄懂进程间的那些事)
  19. B_随笔_关于网站记录(2)
  20. quagga命令行解析

热门文章

  1. 【结论】游戏(jzoj 5536)
  2. 面试了 N 个候选人后,我总结出这份 Java 面试准备技巧
  3. 可能是最全面的 Java G1学习笔记
  4. 漫画:什么是优先队列
  5. SpringCloud配置中心客户端读取配置
  6. 从控制台输入一个数 num 与之前定义的数 n 进行比较
  7. ssm使用全注解实现增删改查案例——Dept
  8. Json字符串和对象相互转换
  9. Mybatis实体类属性名与数据库类名不对应的两种解决方法
  10. java程序大笨钟怎么打,L1-018.大笨鍾(Java)PAT團體程序設計天梯賽-練習集