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)是一种高效的数据结构,它使用散列技术来存储和检索键值对。它具有快速查找、插入和删除操作的能力,同时支持线程安全。

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

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

相关文章

迷你洗衣机哪个牌子好又实惠?小型洗衣机全自动

现在洗内衣内裤也是一件较麻烦的事情了,在清洗过程中还要用热水杀菌,还要确保洗衣液是否有冲洗干净,还要防止细菌的滋生等等,所以入手一款小型的烘洗全套的内衣洗衣机是非常有必要的,专门的内衣洗衣机可以最大程度减少…

乾坤js隔离

乾坤,作为一款微前端领域的知名框架,其建立在single-spa基础上。相较于single-spa,乾坤做了两件重要的事情,其一是加载资源,第二是进行资源隔离。而资源隔离又分为Js资源隔离和css资源隔离。 我们把Js隔离机制常常称作…

前端常用网址总结

https://blog.csdn.net/duanhy_love/article/details/110007515 在线CSS编辑 http://tool.alixixi.com/csseditor/ http://c.biancheng.net/css3/position.html https://www.runoob.com/css/css-positioning.html https://cssgrid-generator.netlify.app/ 开发常用组件网…

C#中获取代码执行时间的方法

在C#中,您可以使用System.Diagnostics.Stopwatch类来测量代码执行时间。以下是一个简单的示例: using System.Diagnostics; public static double MeasureExecutionTime(Action action) {Stopwatch stopwatch new Stopwatch();stopwatch.Start();actio…

SpringMVC(三)获取请求参数

1.1通过ServletAPI获取 SpringMVC封装的就是原生的servlet 我们进行测试如下所示: package com.rgf.controller.service;import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.RequestMapping;import javax.servlet.…

学习MAVEN

MAVEN的详细介绍和作用、意义 好的,小朋友们,我们今天来聊聊一个非常神奇的工具箱,它的名字叫做Maven! 🌟 1. **神奇的工具箱Maven**: Maven就像是一个神奇的工具箱🧰,它可以帮助大人们把他们的电脑工…

P2 B+树索引

文章目录 Task1 B树页B树页B树内部结点B树叶子结点 Task2 B树操作Task2 B树插入和搜索的单一值插入单一值搜索单一值 Task2 B树删除 Task3 叶子扫描的迭代器Task4 并行索引 Task1 B树页 B树页 实际上是每个B树页面的标题部分,包含叶子页面和内部页面共享的信息。 …

【Docker】Dockerfile常用指令

参考官方文档:https://docs.docker.com/engine/reference/builder/ Dockerfile常用指令 指令说明from基础镜像,当前镜像基于(依赖)哪个镜像maintainer镜像的维护者和邮箱run镜像构建时需要执行的命令workdir镜像的工作目录expos…

基于springboot实现基于Java的超市进销存系统项目【项目源码+论文说明】

基于springboot实现基于Java的超市进销存系统演示 摘要 随着信息化时代的到来,管理系统都趋向于智能化、系统化,超市进销存系统也不例外,但目前国内仍都使用人工管理,市场规模越来越大,同时信息量也越来越庞大&#x…

最详细STM32,cubeMX外部中断

这篇文章将详细介绍 cubeMX外部中断的配置,实现过程。 文章目录 前言一、外部中断的基础知识。二、cubeMX 配置外部中断三、自动生成的代码解析四、代码实现。总结 前言 实验开发板:STM32F103C8T6。所需软件:keil5 , cubeMX 。实…

09 创建型模式-建造者模式

1.建造者模式介绍: 建造者模式 (builder pattern), 也被称为生成器模式 , 是一种创建型设计模式 定义: 将一个复杂对象的构建与表示分离,使得同样的构建过程可以创建不 同的表示。 2.建造者模式要解决的问题 建造者模式可以将部件和其组装过程分开&am…

【Unity程序技巧】公共Update管理器

👨‍💻个人主页:元宇宙-秩沅 👨‍💻 hallo 欢迎 点赞👍 收藏⭐ 留言📝 加关注✅! 👨‍💻 本文由 秩沅 原创 👨‍💻 收录于专栏:Uni…

Spring Boot中捕获异常错误信息并将其保存到数据库中

Spring Boot中捕获异常错误信息并将其保存到数据库中: 1.创建数据库表: 首先,您需要创建一个用于存储异常信息的数据库表。可以使用SQL脚本或者使用Hibernate实体类来创建表。以下是一个用于存储异常信息的表的示例SQL: CREATE TABLE erro…

【29】c++设计模式——>策略模式

策略模式 C中的策略模式(Strategy Pattern)是一种行为型设计模式,它允许在运行时选择算法的行为。策略模式通过将算法封装成独立的类,并且使它们可以互相替换,从而使得算法的变化独立于使用算法的客户端。 策略模式通…

图像语义分割 pytorch复现DeepLab v1图像分割网络详解以及pytorch复现(骨干网络基于VGG16、ResNet50、ResNet101)

图像语义分割 pytorch复现DeepLab v1图像分割网络详解以及pytorch复现(骨干网络基于VGG16、ResNet50、ResNet101) 背景介绍2、 网络结构详解2.1 LarFOV效果分析 2.2 DeepLab v1-LargeFOV 模型架构2.3 MSc(Multi-Scale,多尺度(预测…

vim 使用文档笔记

1. i:进入编辑模式 2. ESC:进入一般命令模式 3. h 或 ←:光标向左移动一个字符 4. j 或 ↓:光标向下移动一个字符 5. k 或 ↑:光标向上移动一个字符 6. l 或 →:光标向右移动一个字符 7. num&#xf…

Matlab论文插图绘制模板第122期—函数折线图(fplot)

本期分享的是函数折线图的绘制模板。​ 所谓函数折线图,就是将自定义线函数进行可视化表达​。 先来看一下成品效果: 特别提示:本期内容『数据代码』已上传资源群中,加群的朋友请自行下载。有需要的朋友可以关注同名公号【阿昆的…

【JavaEE】网络编程---TCP数据报套接字编程

一、TCP数据报套接字编程 1.1 ServerSocket API ServerSocket 是创建TCP服务端Socket的API ServerSocket 构造方法: ServerSocket 方法: 1.2 Socket API Socket 是客户端Socket,或服务端中接收到客户端建立连接(accept方法&…

el-table表格的一些操作-表格实现单选、多选

表格实现多选 <el-table:data"dataList"borderselection-change"handleSelectionChange">//多选框<el-table-column type"selection" width"55" align"center" /></el-table> handleSelectionChange(val…