数据结构(Java):集合类LinkedList集合类Stack

1、集合类LinkedList

1.1 什么是LinkedList

LinkedList的底层是一个双向链表的结构(故不支持随机访问):

在LinkedList中,定义了first和last,分别指向链表的首节点和尾结点。

每个节点中有一个成员用来存储数据,还有两个指针域next和prev分别存储下一个节点和上一个节点的地址。

LinkedList也实现了List接口。

1.2 LinkedList的有关方法

1.2.1 构造方法

第二个构造方法的使用和ArrayList是相同的,可以使用实现了Collection接口并且泛型上界为E的集合类来构造LinkedList。

1.2.2 常用方法

1.3 ArrayList和LinkedList的区别

最重要的区别就是 ArrayList底层结构是数组;而,LinkedList的底层结构是双向链表。


2、集合类Stack

Stack是Java为我们封装好的一个“栈”,要想学习Stack,我们需要想了解栈是什么。

2.1 栈

栈,是一种数据结构,是一种特殊的线性表,只允许在固定的一端(栈顶)进行元素的插入和删除操作,栈中的元素具有“先进后出”的特点。

元素进栈,成为压栈、入栈

元素出栈,称为出栈

2.1.1 栈的实现

数组、单链表、双链表都可以实现栈,但是哪一种更好呢?

我们知道,元素出栈和入栈,必须在栈顶操作,那么:

  • 对于数组,直接让size--或size++就可以,时间复杂度为O(1)。
  • 对于单链表,如果采用尾插法入栈(即首节点定义为栈底,尾结点定义为栈顶),那么入栈和出栈需要找到尾结点才能继续操作,时间复杂度为O(n)。即使定义了last指向尾结点,入栈可改善为O(1),而出栈依然为O(n)。但是,如果采用头插法入栈的话,入栈操作和出栈操作,均会改善为O(n)。
  • 对于双向链表,无论是入栈还是出栈,时间复杂度均为O(1)。

2.2 Stack的实现

我们上面提到数组、单链表头插入栈、双链表都可以很好的实现栈,

而集合类Stack的底层结构是数组。

2.3 Stack的常用方法

  • pop() 将栈顶的元素取出,即出栈,同时返回栈顶的元素。
  • peek() 仅仅获取栈顶的元素,不会将元素出栈
  • empty()是Stack特有的判断栈是否为空的方法;Stack继承下来的isEmpty()方法也具有相同的作用
  • LinkedList中也有栈相关的方法,故也可以使用LinkedList来构建栈

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/pingmian/44772.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

京准电钟|ptp精密时钟服务器在网络内作用是什么?

京准电钟|ptp精密时钟服务器在网络内作用是什么? 京准电钟|ptp精密时钟服务器在网络内作用是什么? PTP精密时钟服务器在计算机网络中的作用非常重要,特别是在需要高精度时间同步的场景中。 PTP能够提供纳秒级的时间同…

TikTok短视频矩阵管理系统源码

在数字化浪潮汹涌的今天,短视频已成为人们生活中不可或缺的一部分。TikTok作为短视频领域的佼佼者,其用户基数庞大,影响力深远。然而,对于众多内容创作者和营销人员来说,如何高效管理多个TikTok账号,实现批…

one-hot-zhu案例

# 导入用于对象保存与加载的joblib # from sklearn.externals import joblib import joblib # 导入keras中的词汇映射器Tokenizer from keras.preprocessing.text import Tokenizer def one_hot_01(): # 1 准备语料 vocabs # vocabs {“周杰伦”, “陈奕迅”, “王力宏”, “…

分布式训练

一、分布式计算 跟多GPU不同是:数据不是从主存拿的,是在分布式文件系统拿的,有多个工作站,工作站中有多个GPU,通过网络读取数据到GPU中,GPU通过网络接收到来自参数服务器的参数进行运算计算梯度&#xff0c…

Biotinylated L-Thyroxine (T4) ;生物素 L-甲状腺素(T4)

一、基本信息 常用名:Biotinylated L-Thyroxine (T4) 生物素 L-甲状腺素(T4) 英文名称:Biotinylated L-Thyroxine (T4) 中文名称:生物素 L-甲状腺素(T4) 二、组成与性质 生物素:一种水溶性维生素,也称为维生素B7&#…

Photoshop批量处理图片分辨率

整理一些文件的时候,发现需要处理大量图片的尺寸和分辨率。如果一张一张的处理就会很慢,搜了下,Photoshop提供自动批量处理的方法。在此记录一下。 一、说说批量处理图片 1.打开PS软件并导入图片,我用的是比较老的版本cs4&#…

在创建jsp项目中解决无法连接数据库以及junit问题

💻博主现有专栏: C51单片机(STC89C516),c语言,c,离散数学,算法设计与分析,数据结构,Python,Java基础,MySQL,linux&#xf…

使用semgrep做代码规范扫描

semgrep 简介 semgrep 是一种静态代码分析工具,用于发现和修复软件代码中的安全漏洞、Bug 和编码风格问题。它可以帮助开发人员和安全团队在早期发现和解决潜在的代码问题,提高软件质量和安全性。 以下是 semgrep 的一些主要功能和特点: 静…

将 Vision Transformer 用于医学图像的语义分割

关于ViT的关键点如下: ViT架构基于将图像表示为一组补丁。图像补丁是图像的非重叠块。每个块最初都有一个由该块中的图像像素形成的嵌入向量。Transformer编码器是ViT的主要部分,它根据它们的类别归属来训练补丁之间的相似度。它包含一系列线性、归一化…

拥抱UniHttp,规范Http接口对接之旅

前言 如果你项目里还在用传统的编程式Http客户端比如HttpClient、Okhttp去直接对接第三方Http接口, 那么你项目一定充斥着大量的对接逻辑和代码, 并且针对不同的对接渠道方需要每次封装一次调用的简化, 一旦封装不好系统将会变得难以维护&am…

SprintBoot创建遇到的问题

最近使用IDEA版本为2022.3.1&#xff0c;java版本为21.0.3&#xff0c;现在做一个创建SprintBoot3的一个大体流程 1.先下载Maven&#xff0c;解压到一个位置 maven下载 2.配置setting.xml文件 这路径自己配置&#xff0c;这里不多演示 代码如下&#xff1a; <mirror>&…

基于物联网设计的人体健康监护系统(STM32+ESP8266+华为云IOT)(182)

基于物联网设计的人体健康监护系统(STM32+ESP8266+华为云IOT)(182) 一、前言 1.1 项目介绍 【1】项目功能介绍 随着人们生活水平的提高和健康意识的增强,对个人健康状况的关注也越来越高。传统的健康监测方式往往需要到医院或诊所进行体检,费时费力且不够便捷。本项目设计…

0124__Linux和Unix的Access.conf安全配置

Linux和Unix的Access.conf安全配置-CSDN博客

iptables 详解

在 Buildroot 系统中&#xff0c;iptables 是一个用户空间实用程序程序&#xff0c;它允许管理员配置 Linux 内核中的 IP 包过滤规则。以下是一些关于 iptables 的基本用法和常见示例&#xff1a; 基本用法 iptables 使用规则链来处理数据包。主要的链包括&#xff1a; INPUT…

前端如何取消接口调用

&#x1f9d1;‍&#x1f4bb; 写在开头 点赞 收藏 学会&#x1f923;&#x1f923;&#x1f923; 1. xmlHttpRequest是如何取消请求的&#xff1f; 实例化的XMLHttpRequest对象上也有abort方法 const xhr new XMLHttpRequest(); xhr.addEventListener(load, function(e)…

开关电源——15种控制模式(1)

关于开关电源的控制模式&#xff0c;TI官网的控制模式快速参考指南有相对全面的归纳和描述&#xff0c;提供了15种不同的控制架构&#xff0c;这些架构涵盖了从基础到高级的多种控制模式&#xff0c;以适应不同的应用需求&#xff0c;如下表所示&#xff1a; 以下是对控制模式相…

大话C语言:第28篇 内存分配与释放

1 malloc函数 函数说明&#xff1a; #include <stdlib.h>void *malloc(size_t size); 功能&#xff1a;在内存的动态存储区(堆区)中分配一块长度为size字节的连续区域&#xff0c;用来存放类型说明符指定的类型。分配的内存空间内容不确定。 参数&#xff1a;size&…

记一次Ueditor上传Bypss

前言 前一段时间和小伙伴在某内网进行渗透测试&#xff0c;目标不给加白&#xff0c;只能进行硬刚了&#xff0c;队友fscan一把梭发现某资产疑似存在Ueditor组件&#xff0c;但初步测试是存在waf和杀软的&#xff0c;无法进行getshell&#xff0c;经过一番折腾最终getshell&am…

ESP32-C3模组上跑通AES-GCM(7)

接前一篇文章:ESP32-C3模组上跑通AES-GCM(6) 四、ESP-IDF中的AES-GCM例程解析 上一回继续对ESP-IDF中的AES-GCM进行讲解,讲解了components\components\mbedtls\test_apps\main\test_aes_gcm.c中例程的aes_gcm_test函数的第2段代码。本回继续往下讲解该函数。 1. aes_gcm_…

一个 Docker 搭建的自动化电视剧下载和管理工具

大家好,我是CodeQi! 一个标准的“追剧狂人”。每周都有新剧上线,每天都要时刻关注各大影视平台的更新,这无疑是一项体力与脑力并存的艰巨任务。 于是,我决定为自己打造一个自动化的电视剧下载和管理工具。作为一个程序员,用 Docker 搭建这种自动化工具简直是小菜一碟。…