Java--LinkedList

article/2025/9/11 1:04:35

LinkedList的特点

  • LinkedList是基于双向链表实现的有序集合;
  • LinkedList是非线程安全的;
  • LinkedList中的元素可重复,可为null值;
  • LinkedList可实现快速的插入和删除操作,与ArrayList相比,LinkedList的增删操作效率更高,而查改操作效率较低;
  • LinkedList实现了List接口,可进行列表操作;实现了Deque接口,可作为双端队列使用;实现了Cloneable接口,可克隆;实现了java.io.Serializable接口,可支持序列化,能通过序列化进行传输。

LinkedList的常用方法

  • 增加元素

方法方法描述
add(E e)将指定元素追加到列表末尾
offer(E e)将指定元素追加到列表末尾
add(int index,E e)将指定元素插入到列表指定位置
addAll(Collection<? extends E> c)将指定集合中所有元素追加到列表末尾
addAll(int index,Collection<? extends E> c)从列表指定位置插入指定集合中所有元素
addFirst(E e)在列表开头插入指定元素
offerFirst(E e)在列表开头插入指定元素
addLast(E e)在列表末尾追加指定元素
offerLast(E e)在列表末尾追加指定元素
  • 删除元素

方法方法描述
clear()删除列表所有元素
remove()删除列表头部(第一个元素)
remove(int index)删除列表指定位置的元素
removeFirst()删除并返回第一个元素
removeLast()删除并返回最后一个元素
poll()删除并返回第一个元素
  • 查找/获取元素

方法方法描述
contains(Object o)判断列表中是否存在指定元素
get(int index)获取列表指定位置的元素
getFirst()获取列表第一个元素
getLast()获取列表最后一个元素
indexOf(Object o)返回列表中指定元素第一次出现的索引
lastIndexOf(Object o)返回列表中指定元素最后一次出现的索引
peek()返回第一个元素(不删除)

LinkedList与Deque

如上图所示,实线表示继承,虚线表示实现。LinkedList实现了Deque接口,在构造方法中若参数类型是Deque,则只能访问Deque接口所定义的方法,而不能直接访问LinkedList中的非Deque方法。

Deque的具体使用

//创建双端队列
Deque<Integer> deque=new LinkedList<>();
//添加元素
deque.offer(1);
deque.offer(2);
deque.addFirst(0);
deque.addLast(3);
System.out.println("添加元素后的队列:"+deque);
//获取元素
System.out.println("获取第2个元素:"+((LinkedList<Integer>) deque).get(2));
System.out.println("获取第1个元素:"+deque.getFirst());
System.out.println("获取最后一个个元素:"+deque.getLast());
//删除元素
deque.removeFirst();
System.out.println("删除第一个元素后的队列:"+deque);
deque.removeLast();
System.out.println("删除最后一个元素后的队列:"+deque);

输出结果:

添加元素后的队列:[0, 1, 2, 3]
获取索引为2的元素:2
获取第1个元素:0
获取最后一个个元素:3
删除第一个元素后的队列:[1, 2, 3]
删除最后一个元素后的队列:[1, 2]

LinkedList与栈

由于LinkedList是一个双端队列,因此可以选择队列的任意一端作为栈来使用。

//创建队列
Deque<Integer> stack=new LinkedList<>();
//选择队列的头部作为栈,从头部添加元素(压栈)
stack.offerFirst(1);
stack.offerFirst(2);
stack.push(3);
stack.push(4);
System.out.println("初始时栈的元素:"+stack);
//出栈
System.out.println("出栈:"+stack.pollFirst());
//获取栈顶值但不出栈
System.out.println("获取栈顶值:"+stack.peekFirst());
System.out.println("栈的元素:"+stack);

输出结果:

初始时栈的元素:[4, 3, 2, 1]
出栈:4
获取栈顶值:3
栈的元素:[3, 2, 1]

http://chatgpt.dhexx.cn/article/xkfxgmvZ.shtml

相关文章

LinkedList 基本使用

文章目录 1. LinkedList 简介2. LinkedList 底层操作机制3. LinkedList 源码分析4. LinkedList 增删改查案例5. ArrayList和LinkedList比较 1. LinkedList 简介 LinkedList 底层实现了 双向链表和双端队列 特点可以添加任意元素(元素可以重复)&#xff0c;包括null线程不安全&…

java linkedlist poll_java之LinkedList详细介绍

1 LinkedList介绍 LinkedList简介 LinkedList 是一个继承于AbstractSequentialList的双向链表。它也可以被当作堆栈、队列或双端队列进行操作。 LinkedList 实现 List 接口&#xff0c;能对它进行队列操作。 LinkedList 实现 Deque 接口&#xff0c;即能将LinkedList当作双端队…

LinkedList简介

LinkedList 是一个继承于AbstractSequentialList的双向链表。它也可以被当作堆栈、队列或双端队列进行操作。 LinkedList 实现 List 接口&#xff0c;能对它进行队列操作。 LinkedList 实现 Deque 接口&#xff0c;即能将LinkedList当作双端队列使用。 LinkedList 实现了Clo…

LinkedList特点

聊一聊LinkedList的特点吧~&#xff08;以下都是基于jdk1.8&#xff09; 继承树 LinkedList的继承树如下图&#xff1a; 特点 &#xff08;1&#xff09;允许null值 &#xff08;2&#xff09;内部以双向链表的形式来保存集合中的元素 /*** Pointer to first node.* Inva…

数据结构之链表(LinkedList详解)

文章目录 一、什么是LinkedList&#xff1f;二、LinkedList的使用三、LinkedList自实现四、链表实现逆序打印的两种方式&#xff08;递归和非递归&#xff09; 五、ArrayList和LinkedList有什么区别&#xff1f; 一、什么是LinkedList&#xff1f; LinkedList的底层是 双向链表…

LinkedList用法详解

一、LinkedList简单介绍 LinkedList是List接口的实现类&#xff0c;因此也实现了List的方法。但LinkedList是采用链表结构的方式来实现List接口的&#xff0c;因此在进 行insert 和remove动作时效率要比ArrayList高。 二、LinkedList的用法介绍 1、add和push 通过这两种方法均…

Java集合类——LinkedList(单链表及双链表)

一&#xff0c;ArrayList的缺陷 1.空间浪费 在之前的博客中&#xff0c;我利用源码详细的讲解了ArrayList这个集合类&#xff08;尤其是扩容机制&#xff09;&#xff0c;可以知道ArrayList的底层主要是一个动态的可变数组&#xff0c;容量满的时候需要进行1.5倍扩容。但是我…

java学习之LinkedList(链表)

LinkedList&#xff1a;一种线性表&#xff0c;但不按照线性顺序存储数据&#xff08;实际上为链表&#xff09;。 链表分为单向链表和双向链表&#xff0c;实际应当还有循环链表。 单向链表&#xff1a;将一个区域分成两部分&#xff0c;分别为节点区域和数据域。 如下图所…

LinkedList和ArrayList对比各有什么优势?

一、LinkedList的概述 1. LinkedList是双向链表实现的List 2. LinkedList是非线程安全的 3. LinkedList元素允许为null&#xff0c;允许重复元素 4. LinkedList是基于链表实现的&#xff0c;因此插入删除效率高&#xff0c;查找效率低(虽然有一个加速动作) 5. LinkedList是…

LinkedList详解

文章目录 介绍继承体系 LinkedLists实现底层数组结构构造函数getFirst(),getLast()removeFirest(),removeLast(),remove(e),remove(index)删除head元素删除last元素add()addAll()clear()查找操作遍历 介绍 LinkedList同时实现了List接口和Deque对口&#xff0c;也就是收它既可…

Chrome被百度网页劫持

Chrome被百度劫持的解决办法 浏览器的运行太慢了&#xff0c;就想试试谷歌的浏览器&#xff0c;但是每次打开的都是百度的界面&#xff0c;明显就是被劫持了&#xff0c; 看了网上的好多方法都没有什么明显的效果 问题 在使用Chrome浏览器打开后直接弹出一个百度的界面这看着就…

网页被劫持怎么修复?主页被劫持修复方法

电脑的浏览器被劫持了应该怎么解决&#xff1f;小编今天就来教大家解决电脑浏览器自动跳转到一个网页中的问题。 方法步骤 1.随着网络的兴起&#xff0c;更多的小伙伴享受到网络带来的便利生活&#xff0c;其中上网浏览就是非常受欢迎的一个功能&#xff0c;但是很多不法分子看…

Google Chrome主页被iduba劫持解决方法

今天用电脑的时候发现google的主页被改成了iduba的主页&#xff0c;烦的一比&#xff0c;看了好久才解决1.查看chrome://version 在命令行处会发现带有iduba的网站&#xff0c;我这里解决了&#xff0c;就没有了 2.点开google快捷方式的属性进行修改 将命令行中的代码全部复制…

浏览器被劫持怎么解决?关于浏览器被劫持主页的处理方法

背景: 上个月重做了win10系统,系统激活过程中没有出现任何问题。重装office套装,使用暴风激活下载地址: (http://win.shibojiaa.cn/baofeng/)激活office套装后,发现所有浏览器主页被劫持。打开任何一个浏览器地址栏中显示:(http://uj7.gndh555.top/)随后跳转hao123。…

Microsoft edge 主页被劫持的处理办法

最根本的办法&#xff0c;如果是任务栏固定打开后发现主页被劫持&#xff0c;应该是弄明白任务栏的链接是来自电脑的开始页面还是桌面的快捷方式。 如果是开始界面应用固定于任务栏&#xff0c;那么找到开始界面的Microsoft edge&#xff0c;右键然后找到所在文件夹。 找到开始…

浏览器主页被劫持,跳转hao123解决办法!

劫 持 指 南 前戏-疑难杂症小妙招 当打开电脑准备划水时&#xff0c;结果一打开浏览器&#xff0c;就发现它自动打开一个新的链接&#xff0c;紧接着又跳转到一个特定网页上去了&#xff0c;大家肯定心里那个气啊&#xff0c;打开百度一顿搜索&#xff0c;试了各种方法都不行…

百度主页被“/?tn=88093251_85_hao_pg“劫持的一种解决办法

前言 在闲暇之余换了个系统&#xff0c;为了方便使用了在线的小白一键装机安装的win10专业版&#xff0c;先抛开携带的各种垃圾软件不说&#xff0c;最不爽的还是主页无论如何修改都被百度劫持。 内容 尝试了网上各种解决办法&#xff0c;其中包括但不限于&#xff1a; 下…

Chrome主页被劫持怎么破

之前遇到Chrome被2345劫持了&#xff0c;导致的结果是每天初次打开Chrome都会进入2345的流氓主页&#xff0c;尝试了若干解决办法&#xff0c;最终得以解决。现简要记录一下所尝试过的方法以及解决过程&#xff0c;以下所涉及到的任何一种能够方法都有可能导致Chrome浏览器的劫…

教你解决浏览器被360劫持篡改主页的麻烦

前言 相信很多的小伙伴都遇到一个问题&#xff0c;就是好端端的&#xff0c;打开自己的edge或者Chrome&#xff0c;突然发现自己的主页变成了这样&#xff08;下图&#xff09; 不得不说&#xff0c;这个看得人真的不适。&#xff08;晕&#x1f635;&#xff09;相信大部分人还…

Motan RPC

中文文档&#xff1a;https://github.com/weibocom/motan/wiki/zh_userguide#%E9%85%8D%E7%BD%AE%E8%AF%B4%E6%98%8E 微信公众号