Java里的LinkedList可以同时作为堆栈和队列使用,因此在使用的时候总是会弄混他们的方法,此文就简单总结一下作为不同数据结构使用时的用法。

作为队列

 
方法

声明

任意两种方法:

  • 一是直接声明LinkedList:

    LinkedList<T> q = new LinkedList<T>();
  • 或者使用java.util.Queue接口,其底层关联到一个LinkedList实例。

    Queue<T> q = new LinkedList<T>();

    由于只暴露部分基于队列实现的接口,所以可以提供安全的队列实现。

入队

void offer(T v)

出队

  • T poll(), 如果队列为空,则返回null
  • T remove(), 如果队列为空,则抛出异常

偷看

看看队首元素不移除它。

  • T peek(), 如果队列为空,则返回null
  • T element(), 如果队列为空,则抛出异常

是否为空

  • boolean isEmpty(), 空返回true,否则返回false

作为堆栈

 
方法

声明

任意两种方法:

  • 一是直接声明LinkedList:

    LinkedList<T> stack = new LinkedList<T>();
  • 请注意,LinkedList实现的堆栈名称是Deque:

    Deque<T> stack = new LinkedList<T>();

    由于只暴露部分基于堆栈实现的接口,所以可以提供安全的队列实现。

入栈

void addFirst(T v)

void push(T v)

出栈

  • T pop()
  • T poll()

偷看

看看队首元素不移除它。

  • T peek(), 如果队列为空,则返回null
  • T element(), 如果队列为空,则抛出异常

是否为空

  • boolean isEmpty(), 空返回true,否则返回false

LinkedList可以同时作为堆栈和队列使用的更多相关文章

  1. 面试题:使用LinkedList来模拟一个堆栈或者队列数据结构

    请使用LinkedList来模拟一个堆栈或者队列数据结构. 堆栈:先进后出 First In Last Out  (FILO) 队列:先进先出 First In First Out  (FIFO) 我 ...

  2. 集合框架-LinkedList集合练习(堆栈和队列)

    1 package cn.itcast.p2.linkedlist.test; 2 3 import java.util.LinkedList; 4 5 /* 6 * 请使用LinkedList来模拟 ...

  3. 使用LinkedList模拟一个堆栈或者队列数据结构

    使用LinkedList模拟一个堆栈或者队列数据结构. 堆栈:先进后出  如同一个杯子. 队列:先进先出  如同一个水管. import java.util.LinkedList; public cl ...

  4. Java LinkedList特有方法程序小解 && 使用LinkedList 模拟一个堆栈或者队列数据结构。

    package Collection; import java.util.LinkedList; /* LinkedList:特有的方法 addFirst()/addLast(); getFirst( ...

  5. java 使用LinkedList模拟一个堆栈或者队列数据结构

    近期在复习下java基础,看了下java基础,在看到集合时突然发现想起来曾经面试有一道笔试题:模拟一个堆栈或者队列数据结构,当时还没做出来,今天就写一下,首先得明确堆栈和队列的数据结构 堆栈:先进后出 ...

  6. java集合 collection-list-LinkedList 模拟一个堆栈或者队列数据结构。

    /* 使用LinkedList模拟一个堆栈或者队列数据结构. 堆栈:先进后出 如同一个杯子. 队列:先进先出 First in First out FIFO 如同一个水管. */ import jav ...

  7. JavaScript学习笔记之 数组方法一 堆栈 和队列

    数组的方法 以及 堆栈的操作的方法 JavaScript是一种弱类型语言,不像其它程序语言需要严格定义数据类型.在JavaScript中数组可以任意修改变动,这样也就出现了一个问题,如果边遍历数组边操 ...

  8. python学习笔记六——堆栈和队列

    4.2.3 列表的查找.排序.反转 list列表可以进行添加.删除操作,此外List列表还提供了查找元素的方法.list列表的查找提供了两种方式,一种是使用index方法返回元素在列表中的位置,另一种 ...

  9. python实现堆栈和队列

    利用python列表实现堆栈和队列 堆栈: 堆栈是一个后进先出的数据结构,其工作方式就像生活中常见到的直梯,先进去的人肯定是最后出. 我们可以设置一个类,用列表来存放栈中的元素的信息,利用列表的app ...

  10. 【IT笔试面试题整理】堆栈和队列

    如何准备: Whether you are asked to implement a simple stack / queue, or you are asked to implementa modi ...

随机推荐

  1. 5.jenkins的项目构建

    Jenkins构建的项目类型介绍 Jenkins中自动构建项目的类型有很多,常用的有以下三种 自由风格软件项目(FreeStyle Project) Maven项目(Maven Project) 流水 ...

  2. 在 ASP.NET Core 中创建 gRPC 客户端和服务器

    前言 gRPC 是一种高性能.开源的远程过程调用(RPC)框架,它基于 Protocol Buffers(protobuf)定义服务,并使用 HTTP/2 协议进行通信. 新建项目 新建解决方案Grp ...

  3. 读书笔记-C#8.0本质论-06

    18.4 并行迭代 如果一个对CPU资源占用较大的计算可以很容易被分割为多个彼此完全独立的部分以任意顺序执行,则要使用并行循环.示例如下: using System; using System.Col ...

  4. spring 跟 诠释及区别

    <context:annotation-config> 和 <context:component-scan>的区别 Difference between <context ...

  5. Java 日志缓存机制的实现

    本文介绍了 Java 日志机制,并通过扩展日志功能,实现日志缓存.同时,可以动态控制日志信息打印到日志文件的级别,从而提高了日志的灵活性,给产品质量带来更大的帮助.文章主要围绕 MemoryHandl ...

  6. Ubuntu实现SSH外网连接内网(反向隧道)

    应用场景: 如果你有Linux云主机(腾讯.华为等),且公司有一台只有内网IP (或动态IP) 的Linux工作机:你计划在家里工作时,通过家里的电脑连接公司的工作机 (且不想使用类似Teamview ...

  7. 记一次 .NET某差旅系统 CPU爆高分析

    一:背景 1. 讲故事 前些天训练营里的一位学员找到我,说他们的差旅后台系统出现了CPU爆高的情况,爆高之后就下不去了,自己分析了下也没找到原因,事情比较紧急,让我帮忙看下是什么回事,手里也有dump ...

  8. ChatGPT生成测试用例的最佳实践(三)

    还记得在第1章,我们利用ChatGPT生成的业务用例吗?这种业务用例生成方式其实和场景法用例设计十分相似,我们是不是也可以直接将业务用例输入ChatGPT,让它输出测试用例呢?笔者输入相关提示词让其补 ...

  9. 数据加速器 GooseFS 1.2.0 版本正式发布

    新春已来临,腾讯云存储团队正式在官方网站上架数据加速器 GooseFS 产品,同时数据加速器 GooseFS 1.2.0 版本正式发布.该版本总结并收敛了 GooseFS 在过往大规模生产环境实践中遇 ...

  10. https://gitlab.com/volian/nala/-/wikis/Installation

    Installation   Debian Testing/Sid Nala is officially in the testing and sid repos. sudo apt install ...