【JAVA进阶篇】与数据结构结合?这些知识你应该知道

news2025/1/11 12:48:27

在这里插入图片描述


个人主页:【😊个人主页】
系列专栏:【❤️JAVA进阶】


文章目录

  • 前言
  • 关与JAVA中的数据结构
    • Java中的数据结构
  • 枚举
  • 位集合
    • 创建一个初始大小的位集合
    • 设置特定的位
    • 从另一个位集合中复制位
    • 迭代位集合中设置为1的位
    • 将位集合转换为字节数组
    • 将字节数组转换为位集合
  • 字典
  • 结尾


前言

从今天起我们将进入一个全新的章节,关于JAVA我们也将有一个更深的认识,话不多说,让我们开始吧!

关与JAVA中的数据结构

关于数据结构相信很多小伙伴并不陌生,在之前的数据结构与算法中我们有大致的学习过,不了解的同学可以点击区看看。这里我们就不过多的赘叙了,但是在Java工具包中提供了强大的数据结构。
在这里插入图片描述

Java中的数据结构

  • 枚举(Enumeration)
  • 位集合(BitSet)
  • 向量(Vector)
  • 栈(Stack)
  • 字典(Dictionary)
  • 哈希表(Hashtable)
  • 属性(Properties)
    在Java2中引入了一种新的框架-集合框架(Collection)

枚举

枚举类型在Java中是通过enum关键字定义的。

enum DayOfWeek {
    MONDAY, TUESDAY, WEDNESDAY, THURSDAY, FRIDAY, SATURDAY, SUNDAY
}

上面的代码定义了一个名为DayOfWeek的枚举类型,它包含一组表示星期几的常量。这些常量是MONDAYTUESDAYWEDNESDAYTHURSDAYFRIDAYSATURDAYSUNDAY
可以通过以下方式使用枚举类型:

DayOfWeek day = DayOfWeek.MONDAY;
if (day == DayOfWeek.MONDAY) {
    System.out.println("Today is Monday");
}

枚举类型可以包含方法和字段,就像普通的Java类一样。枚举类型还可以实现接口。枚举类型通常用于表示固定的、有限的常量集合,例如颜色、方向、状态等。

位集合

位集合(BitSet)是一个可调整大小的位向量,每个位的值只能是0或1。它是Java集合框架中的一部分,位集合可以高效地表示大量的布尔值,因为它们使用的是位操作而不是字节操作。

创建一个初始大小的位集合

BitSet bitset = new BitSet();

设置特定的位

bitset.set(3); // 将索引为3的位设置为1

从另一个位集合中复制位

BitSet other = new BitSet();
other.set(2);
other.set(4);
bitset.or(other); // 将other中的位复制到bitset中

迭代位集合中设置为1的位

for (int i = bitset.nextSetBit(0); i >= 0; i = bitset.nextSetBit(i+1)) {
    // 处理索引为i的位
}

将位集合转换为字节数组

byte[] bytes = bitset.toByteArray();

将字节数组转换为位集合

bitset = BitSet.valueOf(bytes);

字典

在Java中,字典通常指的是键值对的结构,也称为映射。Java中的字典有多种实现方式,包括:

  • HashMap:基于哈希表实现,具有快速的查找和插入操作,但是对于迭代操作不太友好。
  • TreeMap:基于红黑树实现,具有自动排序的功能,适合需要有序的字典。
  • LinkedHashMap:基于哈希表和双向链表实现,具有顺序访问的特性,可以保留元素插入的顺序。
  • Hashtable:类似于HashMap,但是线程安全,性能较差,现在很少使用。
//创建一个HashMap字典
Map<String, Integer> map = new HashMap<>();

//向字典中插入新元素
map.put("apple", 10);
map.put("orange", 5);
map.put("banana", 15);

//从字典中获取元素
int count = map.get("apple");

//遍历字典中的所有元素
for (Map.Entry<String, Integer> entry : map.entrySet()) {
    String key = entry.getKey();
    int value = entry.getValue();
    System.out.println("key:" + key + ",value:" + value);
}

//判断字典中是否包含某个键
boolean containsKey = map.containsKey("pear");

//获取字典中键的集合
Set<String> keySet = map.keySet();

//获取字典中值的集合
Collection<Integer> values = map.values();

//从字典中删除元素
map.remove("banana");

//清空字典中的所有元素
map.clear();

结尾

因为篇幅有限,还有一些数据结构有机会我会为大家详细讲解,我们下次再见
在这里插入图片描述

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

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

相关文章

【中间件篇-Redis缓存数据库05】Redis集群高可用高并发

Redis集群 Redis Cluster是Redis的分布式解决方案&#xff0c;在3.0版本正式推出&#xff0c;有效地解决了Redis分布式方面的需求。当遇到单机内存、并发、流量等瓶颈时&#xff0c;可以采用Cluster架构方案达到负载均衡的目的。之前,Redis分布式方案一般有两种: 1、客户端分…

jbase支持连IRIS

jbase设计的时候就抽取了IDbFactory接口&#xff0c;支持不同数据库只要配置该接口实现类即可&#xff0c;那么就用IRIS测试下多数据库支持。 首先从IRIS安装目录拷贝jar包 然后实现数据库驱动接口 package LIS.Dal.Base;import LIS.Core.MultiPlatform.LISConfigurtaion;…

Python 潮流周刊#26:requests3 的现状

△点击上方“Python猫”关注 &#xff0c;回复“1”领取电子书 你好&#xff0c;我是猫哥。这里每周分享优质的 Python、AI 及通用技术内容&#xff0c;大部分为英文。本周刊开源&#xff0c;欢迎投稿[1]。另有电报频道[2]作为副刊&#xff0c;补充发布更加丰富的资讯。 &#…

微信小程序隐私政策不合规,应当由用户自主阅读后自行选择是否同意隐私政策协议,不得默认强制用户同意

小程序隐私政策不合规&#xff0c;默认自动同意《用户服务协议》及《隐私政策》&#xff0c;应当由用户自主阅读后自行选择是否同意隐私政策协议&#xff0c;不得默认强制用户同意&#xff0c;请整改后再重新提交。 把 登录代表同意《用户协议》和《隐私政策》 改为 同意《用…

测试用例的设计方法(黑盒)

1.基于需求的设计方法 比如针对网易邮箱进行测试&#xff1a;分为功能相关和非功能相关两大类 但是这么设计的话&#xff0c;有无数多个测试用例&#xff0c;我们现在看到的只是一些大概的测试用例&#xff0c;要想设计具体的测试用例&#xff0c;需要用到下面测试用例的方法…

游戏交易平台系统源码下载 网络游戏币、装备、账号、道具等交易网站源码

最新仿7881游戏交易平台系统源码下载网络游戏币、装备、账号、道具等交易网站源码 下载地址&#xff1a;https://bbs.csdn.net/topics/617562568

嵌入式软件开发是个啥职业?

在硬件行业中&#xff0c;有一类工作岗位是更偏向软件的&#xff0c;或者说是软硬结合非常紧密的工作&#xff0c;那就是嵌入式开发工程师。 说起嵌入式&#xff0c;可能很多没有接触过电子类的人没有听说这些东西。 其实简单来说&#xff0c;嵌入式开发就是写程序去控制硬件电…

某城高速综合管控大数据大屏可视化【可视化项目案例-04】

🎉🎊🎉 你的技术旅程将在这里启航! 🚀🚀 本文选自专栏:可视化技术专栏100例 可视化技术专栏100例,包括但不限于大屏可视化、图表可视化等等。订阅专栏用户在文章底部可下载对应案例源码以供大家深入的学习研究。 🎓 每一个案例都会提供完整代码和详细的讲解,不…

Vue23组件自定义事件 和 解绑事件

Vue2&3组件自定义事件 和 解绑事件 Vue2组件自定义事件 功能&#xff1a;父组件绑定数据&#xff0c;子组件触发事件。&#xff08;父绑子触发&#xff09; 实现步骤&#xff08;前三步在父组件实现&#xff0c;第四步在子组件实现&#xff09;&#xff1a; 第一步&#…

【LeetCode刷题-二分查找】--162.寻找峰值

162.寻找峰值 方法一&#xff1a;寻找最大值 题目保证了nums[i]≠nums[i1]&#xff0c;所以数组nums中最大值两侧的元素一定严格小于最大值本身&#xff0c;因此最大值所在的位置就是一个可行的峰值位置 class Solution {public int findPeakElement(int[] nums) {int idx 0…

desc相关注入

desc相关注入 补充

合并二叉树(Java)

题目描述 给你两棵二叉树&#xff1a; root1 和 root2 。 想象一下&#xff0c;当你将其中一棵覆盖到另一棵之上时&#xff0c;两棵树上的一些节点将会重叠&#xff08;而另一些不会&#xff09;。你需要将这两棵树合并成一棵新二叉树。合并的规则是&#xff1a;如果两个节点重…

递归和master公式

前置知识&#xff1a;无 1&#xff09;从思想上理解递归&#xff1a;对于新手来说&#xff0c;递归去画调用图是非常重要的&#xff0c;有利于分析递归 2&#xff09;从实际上理解递归&#xff1a;递归不是玄学&#xff0c;底层是利用系统栈来实现的 3&#xff09;任何递归函…

windows上运行yolov3代码详解(小白)

batch_normalize1 # 是否做BN 代码链接 环境配置 没有Anaconda的话可以安装下 首先创建虚拟环境&#xff0c;名称随意&#xff0c;版本3.9.我觉得挺好的 激活虚拟环境 conda activate 刚刚创建的环境名称 切换到requirements.txt目录下&#xff0c;直接vscode打开yolov3文件…

CS224W5.3——信念传播

此文中&#xff0c;我们介绍信念传播&#xff0c;这是一种回答图中概率查询的动态规划方法。通过迭代传递消息给邻居节点&#xff0c;如果达成共识&#xff0c;则计算最终的信念值。然后&#xff0c;我们通过示例和泛化树结构展示消息传递。最后讨论了循环信念传播算法及其优缺…

践行“微”使命——建行江门市分行大力发展普惠金融支持小微企业

促进小微企业发展是保持国民经济高质量发展的重要基础。建行广东省江门市分行立足当地特色产业之需&#xff0c;以金融活水润泽侨乡众多小微企业&#xff0c;携手共赴美好未来。 双向奔赴&#xff0c;添翼高企发展 江门开平水口镇是全国三大水暖卫浴生产基地之一&#xff0c;…

CHM Viewer Star 6.3.2(CHM文件阅读)

CHM Viewer Star 是一款适用于 Mac 平台的 CHM 文件阅读器软件&#xff0c;支持本地和远程 CHM 文件的打开和查看。它提供了直观易用的界面设计&#xff0c;支持多种浏览模式&#xff0c;如书籍模式、缩略图模式和文本模式等&#xff0c;并提供了丰富的功能和工具&#xff0c;如…

队列Queue

结构特点&#xff1a;先进先出实现模式&#xff1a;单向非循环双指针链表 两个指针分别记录头和尾之所以不用循环链表是添加删除元素都在链表头部进行&#xff0c;不涉及尾部增删操作。 声明队列 声明队列之所以要用到两个结构体是因为除了单个链表节点之外&#xff0c;还需要…

神经网络(第二周)

一、简介 1.1 需求预测示例 1.1.1 逻辑回归算法 根据价格预测商品是否畅销。特征&#xff1a;T恤的价格&#xff1b;分类&#xff1a;销售量高1/销售量低0&#xff1b;使用逻辑回归算法进行分类&#xff0c;拟合效果如下图所示&#xff1a; 1.1.2 神经元和神经网络 将逻辑回…