当前位置: 首页 > news >正文

Java 数据结构

枚举

Java枚举是一种特殊的类,它用于定义有限个特定的值,例如一周的星期或者性别。枚举在Java中被视为数据类型,你可以使用它们来创建枚举类型的变量,然后使用那些枚举值等。
在Java中,声明枚举类型需要使用enum关键字,然后定义枚举的名称、可访问性、基础类型和成员等。例如:

public enum Day {  SUNDAY, MONDAY, TUESDAY, WEDNESDAY,   THURSDAY, FRIDAY, SATURDAY  
}

这里定义了一个名为Day的枚举类型,它有七个成员,代表一周的七天。
任意两个枚举成员不能具有相同的名称。每个枚举成员(这里是一周的每一天)都是该枚举类型的一个实例。当它们被声明时,系统会自动添加public static final修饰,这意味着它们是公共的、静态的、不变的常量。
在Java中,枚举类型有几个重要的特性:
枚举在类加载过程中创建自定义枚举对象,并在静态块中初始化它们。
枚举默认继承了java.lang.Enum类,而这个类实现了java.lang.Serializable和java.lang.Comparable两个接口。
枚举类的构造函数只能使用private访问修饰符。如果省略了其构造器的访问控制符,则默认使用private修饰。
枚举类的所有实例必须在枚举类中显式列出,否则这个枚举类将永远都不能产生实例。
这就是Java枚举的基本内容。使用枚举可以创建一组有限的、特定的值,这在编程中非常有用。

Java栈(Stack)是一种后进先出(LIFO)的数据结构,用于存储数据的简单线性表。它允许在一端进行插入和删除操作,通常称为栈顶。在Java中,栈被实现为Vector类,继承自Vector类并实现了Stack接口。
栈具有以下基本操作:
push(压栈):将一个元素插入到栈顶,即最后一个插入的元素。
pop(出栈):删除并返回栈顶的元素,即最后一个插入的元素。
top(查看栈顶元素):返回栈顶的元素但不删除。
size(获取栈的大小):返回栈中元素的个数。
isEmpty(判断栈是否为空):如果栈为空,返回true;否则返回false。
isFull(判断栈是否已满):如果栈已满,返回true;否则返回false。
clear(清空栈):删除栈中的所有元素。
Java中的Stack类还具有一些其他的方法,例如peek方法,它可以查看栈顶元素但不删除,以及search方法,它可以查找元素在栈中的位置。

字典

Java中的字典(Dictionary)是一种存储键值对(key-value pairs)的数据结构,其中每个键都是唯一的,可以用来查找、删除或更新与之关联的值。在Java中,字典的实现通常使用Java集合框架中的Map接口。
Map接口提供了以下基本操作:
put(添加或更新):将一个键值对添加到字典中或更新已有的键值对。如果键已经存在,则用新的值替换旧的值。
get(获取):根据给定的键返回与之关联的值。如果键不存在于字典中,则返回null。
remove(删除):从字典中删除指定的键值对。如果键不存在于字典中,则不进行任何操作。
containsKey(判断键是否存在):检查字典中是否包含指定的键。如果键存在,则返回true;否则返回false。
containsValue(判断值是否存在):检查字典中是否包含指定的值。如果值存在,则返回true;否则返回false。
size(获取字典大小):返回字典中存储的键值对的数量。
isEmpty(判断字典是否为空):如果字典为空(即不包含任何键值对),则返回true;否则返回false。
clear(清空字典):删除字典中的所有键值对,使字典为空。
Java中常用的实现字典的类有HashMap、Hashtable和TreeMap等。HashMap是HashMap类的一个实现,它使用哈希表来存储键值对,具有较快的查找速度和插入速度。Hashtable是Hashtable类的一个实现,它使用数组和链表来存储键值对,具有较高的并发性能。TreeMap是TreeMap类的一个实现,它将键值对按照键的升序排列,并提供了一些额外的功能,如获取最大值和最小值等。

哈希表

Java中的哈希表(Hashtable)是一个散列表,它存储的内容是键值对(key-value)映射。哈希表继承自Dictionary,实现了Map、Cloneable、java.io.Serializable接口。
哈希表的核心是散列函数,它将关键码值映射到表中一个位置来访问记录,以加快查找的速度。哈希表的性能受两个参数影响:初始容量和加载因子。初始容量是哈希表中桶的数量,加载因子是对哈希表在其容量自动增加之前可以达到多满的一个尺度。通常默认的加载因子是0.75,这是在时间和空间成本上寻求一种折衷。加载因子过高虽然减少了空间开销,但同时也增加了查找某个条目的时间。
哈希表中的键和值都不能为null,且它的键是唯一的,每个键对应一个值。当存储或检索数据时,只需提供键即可。如果多个键对应同一个桶,则这些键会形成一个链表。在哈希表的查找、插入、删除操作中,时间复杂度为O(1)。
与HashMap类似,Hashtable也是线程安全的,它的所有方法都是同步的。这意味着在多线程环境下,可以安全地使用Hashtable,而不会出现数据不一致的情况。
总之,Java中的哈希表(Hashtable)是一种高效的数据结构,它使用散列技术来存储和检索键值对。它具有快速查找、插入和删除操作的能力,同时支持线程安全。

相关文章:

Java 数据结构

枚举 Java枚举是一种特殊的类,它用于定义有限个特定的值,例如一周的星期或者性别。枚举在Java中被视为数据类型,你可以使用它们来创建枚举类型的变量,然后使用那些枚举值等。 在Java中,声明枚举类型需要使用enum关键字…...

python sqlalchemy(ORM)- 02 表关系

文章目录 表关系ORM表示 1v1ORM表示 1vm 表关系 1:1,表A 中的一条记录,仅对应表B中的一条记录;表B的一条记录,仅对应表A的一条记录。1:m,表A中的一条记录,对应表B中的多条记录,表B中的一条记录…...

Http长连接同一个socket多个请求和响应如何保证一一对应?

HTTP/2引入二进制数据帧和流的概念,其中帧对数据进行顺序标识,如下图所示,这样浏览器收到数据之后,就可以按照序列对数据进行合并,而不会出现合并后数据错乱的情况。同样是因为有了序列,服务器就可以并行的…...

Standford Compiler Course Assignment 2

第二部分的作业是语法分析,通过编写cool.y(这个assignment的任务),利用bison将其自动生成语法分析LALR(1)的代码。 语法分析,就是将词法分析阶段已经识别好的token,按照语法的规则,构建抽象语法树的过程。 比如以下的…...

基于Java的校园论坛管理系统设计与实现(源码+lw+部署文档+讲解等)

文章目录 前言具体实现截图论文参考详细视频演示为什么选择我自己的网站自己的小程序(小蔡coding) 代码参考数据库参考源码获取 前言 💗博主介绍:✌全网粉丝10W,CSDN特邀作者、博客专家、CSDN新星计划导师、全栈领域优质创作者&am…...

谈谈你对Spring的理解

谈谈你对Spring的理解 一,什么是Spring 1.介绍 Spring是一个用于开发Java应用程序的工具集合,它提供了许多方便的组件和工具,可以帮助开发者更轻松地构建企业级应用程序。 Spring Framework是Spring的核心部分,它可以帮助开发者…...

系统架构师考试易混淆知识点总结

易混淆点1:系统工程生命周期与信息系统的生命周期 1、系统工程生命周期阶段 探索性研究→概念阶段→开发阶段→生产阶段→使用阶段→保障阶段→退役阶段 2、信息系统的生命周期 产生阶段→开发阶段(单个系统开发:总体规划、系统分析、系统设计、系统实施、系统验收…...

反射的作用( 越过泛型检查 和 可以使用反射保存所有对象的具体信息 )

1、绕过 编译阶段 为集合添加数据 反射是作用在运行时的技术,此时集合的泛型将不能产生约束了,此时是可以 为集合存入其他任意类型的元素的 。泛型只是在编译阶段可以约束集合只能操作某种数据类型,在 编译成Class文件进入 运行阶段 的时候&a…...

前端开发实践:vue中用qrcode库将超链接生成二维码图片

🏆作者简介,黑夜开发者,CSDN领军人物,全栈领域优质创作者✌,阿里云社区专家博主,2023年6月csdn上海赛道top4。 🏆数年电商行业从业经验,历任核心研发工程师,项目技术负责…...

数据库连接池有什么用?它有哪些关键参数?

首先,数据库连接池是一种池化技术,池化技术的核心思想是实现资源的复用,避免资源重复创建销毁的开销。而在数据库的应用场景里面,应用程序每次向数据库发起 CRUD 操作的时候,都需要创建连接.在数据库访问量较大的情况下…...

Android Settings解析

Android Settings 系列文章: Android Settings解析SettingsIntelligenceSettingsProvider 首语 Android设置应用是Android系统中一个非常重要的系统应用,它允许用户调整和设置系统的各种参数和功能(系统设置/自定义设置/控制应用权限/开发…...

Spring+spring mvc+mybatis整合的框架

Spring是一个轻量级的企业级应用开发框架,于2004年由Rod Johnson发布了1.0版本,经过多年的更新迭代,已经逐渐成为Java开源世界的第一框架,Spring框架号称Java EE应用的一站式解决方案,与各个优秀的MVC框架如SpringMVC、…...

02-2、PyCharm中文乱码的三处解决方法

PyCharm中文乱码 修改处1: 修改处2:这个也没用 在Pycharm中可以创建一个模版,每次新建python文件时Pycharm会默认在前两行生成utf-8 #!/user/bin/env python3 # -- coding: utf-8 -- 还是乱码 再在这里设置以下 添加 : -Dfi…...

Axi接口的DDR3:参数,时序,握手机制

参考 AXI总线的Burst Type以及地址计算 | WRAP到底是怎么一回事?_axi wrap-CSDN博客 还有官方手册,名字太长想起来再写。 Transaction/Burst/Transfer/Beat Transaction指一次传输事务,实际上包括了address phase, data phase与response ph…...

浏览器标签上添加icon图标;html引用ico文件

实例 <link rel"shortcut icon" href"./XXX.ico" type"image/x-icon">页面和图标在同一目录内 则 <link rel"shortcut icon" type"text/css" href"study.ico"/>可以阿里矢量图库关键字搜索下载自己…...

深入解析i++和++i的区别及性能影响

在我们编写代码时&#xff0c;经常需要对变量进行自增操作。这种情况下&#xff0c;我们通常会用到两种常见的操作符&#xff1a;i和i。最近在阅读博客时&#xff0c;我偶然看到了有关i和i性能的讨论。之前我一直在使用它们&#xff0c;但从未从性能的角度考虑过&#xff0c;这…...

2023年中国酒类新零售行业发展概况分析:线上线下渠道趋向深度融合[图]

近年来&#xff0c;我国新零售业态不断发展&#xff0c;线上便捷性和个性化推荐的优势逐步在放大&#xff0c;线下渠道智慧化水平持续提升&#xff0c;线上线下渠道趋向深度融合。2022年&#xff0c;我国酒类新零售市场规模约为1516亿元&#xff0c;预计2025年酒类新零售市场规…...

交通 | 实现可泛化性:机器学习求解VRP

​ 推文作者&#xff1a;缪昌昊&#xff0c;张景琪&#xff0c;张云天 论文作者&#xff1a;Jieyi Bi, Yining Ma, Jiahai Wang, Zhiguang Cao, Jinbiao Chen, Yuan Sun, and Yeow Meng Chee​ 论文原文&#xff1a;Bi, Jieyi, et al. “Learning generalizable models for veh…...

php使用sqlServer

sqlServer扩展 PDO_MSSQL|sqlsrv|odbc}mssql|pdo_odbc PHP 安装php_sqlsrv php_pdo_sqlsrv https://pecl.php.net/package/sqlsrv/5.8.1/windows PECL :: Package :: pdo_sqlsrv 5.8.1 for Windows SqlServer驱动&#xff1a;msodbcsql...

H3C SecParh堡垒机 get_detail_view.php 任意用户登录漏洞

与齐治堡垒机出现的漏洞不能说毫不相关&#xff0c;只能说一模一样 POC验证的url为&#xff1a; /audit/gui_detail_view.php?token1&id%5C&uid%2Cchr(97))%20or%201:%20print%20chr(121)%2bchr(101)%2bchr(115)%0d%0a%23&loginadmin成功获取admin权限 文笔生疏…...

镜像里切换为普通用户

如果你登录远程虚拟机默认就是 root 用户&#xff0c;但你不希望用 root 权限运行 ns-3&#xff08;这是对的&#xff0c;ns3 工具会拒绝 root&#xff09;&#xff0c;你可以按以下方法创建一个 非 root 用户账号 并切换到它运行 ns-3。 一次性解决方案&#xff1a;创建非 roo…...

土地利用/土地覆盖遥感解译与基于CLUE模型未来变化情景预测;从基础到高级,涵盖ArcGIS数据处理、ENVI遥感解译与CLUE模型情景模拟等

&#x1f50d; 土地利用/土地覆盖数据是生态、环境和气象等诸多领域模型的关键输入参数。通过遥感影像解译技术&#xff0c;可以精准获取历史或当前任何一个区域的土地利用/土地覆盖情况。这些数据不仅能够用于评估区域生态环境的变化趋势&#xff0c;还能有效评价重大生态工程…...

3-11单元格区域边界定位(End属性)学习笔记

返回一个Range 对象&#xff0c;只读。该对象代表包含源区域的区域上端下端左端右端的最后一个单元格。等同于按键 End 向上键(End(xlUp))、End向下键(End(xlDown))、End向左键(End(xlToLeft)End向右键(End(xlToRight)) 注意&#xff1a;它移动的位置必须是相连的有内容的单元格…...

JVM 内存结构 详解

内存结构 运行时数据区&#xff1a; Java虚拟机在运行Java程序过程中管理的内存区域。 程序计数器&#xff1a; ​ 线程私有&#xff0c;程序控制流的指示器&#xff0c;分支、循环、跳转、异常处理、线程恢复等基础功能都依赖这个计数器完成。 ​ 每个线程都有一个程序计数…...

离线语音识别方案分析

随着人工智能技术的不断发展&#xff0c;语音识别技术也得到了广泛的应用&#xff0c;从智能家居到车载系统&#xff0c;语音识别正在改变我们与设备的交互方式。尤其是离线语音识别&#xff0c;由于其在没有网络连接的情况下仍然能提供稳定、准确的语音处理能力&#xff0c;广…...

图解JavaScript原型:原型链及其分析 | JavaScript图解

​​ 忽略该图的细节&#xff08;如内存地址值没有用二进制&#xff09; 以下是对该图进一步的理解和总结 1. JS 对象概念的辨析 对象是什么&#xff1a;保存在堆中一块区域&#xff0c;同时在栈中有一块区域保存其在堆中的地址&#xff08;也就是我们通常说的该变量指向谁&…...

文件上传漏洞防御全攻略

要全面防范文件上传漏洞&#xff0c;需构建多层防御体系&#xff0c;结合技术验证、存储隔离与权限控制&#xff1a; &#x1f512; 一、基础防护层 前端校验&#xff08;仅辅助&#xff09; 通过JavaScript限制文件后缀名&#xff08;白名单&#xff09;和大小&#xff0c;提…...

跨平台商品数据接口的标准化与规范化发展路径:淘宝京东拼多多的最新实践

在电商行业蓬勃发展的当下&#xff0c;多平台运营已成为众多商家的必然选择。然而&#xff0c;不同电商平台在商品数据接口方面存在差异&#xff0c;导致商家在跨平台运营时面临诸多挑战&#xff0c;如数据对接困难、运营效率低下、用户体验不一致等。跨平台商品数据接口的标准…...

生信服务器 | 做生信为什么推荐使用Linux服务器?

原文链接&#xff1a;生信服务器 | 做生信为什么推荐使用Linux服务器&#xff1f; 一、 做生信为什么推荐使用服务器&#xff1f; 大家好&#xff0c;我是小杜。在做生信分析的同学&#xff0c;或是将接触学习生信分析的同学&#xff0c;<font style"color:rgb(53, 1…...

Excel 怎么让透视表以正常Excel表格形式显示

目录 1、创建数据透视表 2、设计 》报表布局 》以表格形式显示 3、设计 》分类汇总 》不显示分类汇总 1、创建数据透视表 2、设计 》报表布局 》以表格形式显示 3、设计 》分类汇总 》不显示分类汇总...