Java数据结构(3)-数组

Win10下Altera USB-Blaster驱动安装详解:禁用数字签名与排查指南 在嵌入式开发和FPGA调试过程中,驱动安装是工程师绕不开的环节,尤其是当操作系统对驱动签名有严格限制时,硬件往往无法被正常识别。数字签名是系统验证驱动程序来源和完整性的重要机制,Win10出于安全考虑,默认拒绝加载未经签名的驱动,这正是Altera USB-Blaster下载器在设备管理器中显示未知设备或黄色感叹号的根本原因。通过理解设备管理器的排查逻辑,掌握临时禁用驱动强制签名或开启测试模式的方法,配合正确的驱动文件路径选择与手动安装操作,即可解决Quartus无法检测到下载器的问题。这一流程同样适用于许 阅读详情

在java中,数组是查询性能最高的数据类型,同时也是集合类型的底层实现。

内存结构

String[] array = new String[10];

如上,这里new了一个数组对象,数组中有10个引用元素,每个引用 又可以指向一个String对象。这10个引用元素并没有存储在数组对象中,而是在另一块内存中连续存储。上一篇讲过,数组对象只有16个字节,存储不下那么多元素,只需要存储第1个元素的内存地址。那么,数组如何找到第2个和第n个元素?

数组寻址

第2篇讲过,引用的长度是相等的,即4字节, 由此可以得出一个数组的寻址公式: 
  • 第n个元素的内存地址 = 第1个元素的内存地址 + 数组下标 * 元素类型长度 。
因此,无论在数组中存储多大的数据量,都可以瞬间计算出任一元素的内存地址,所以数组的查询效率是最高的。

查询性能测试

以下创建一个5亿长度的数组,并添加5亿个数据元素,执行5亿次查询。
	public static void main(String[] args) throws InterruptedException {	
		//创建一个5亿元素的数组
		int size=500000000;
		int[] s = new int[size];
		for(int i=0;i<s.length;i++) {
			s[i] = i;
		}
		//记录时间点1
		long time1 = System.currentTimeMillis();
		int temp;
		//执行5亿次查询
		for(int i=0;i<size;i++) {
			temp = s[i];
		}
		//记录时间点2
		long time2 = System.currentTimeMillis();
		System.out.println(time2-time1);
	}
耗时:1毫秒
5亿次查询仅用时1毫秒,没有比它性能更高的了。

增删改性能

无论什么结构,首先要通过查询进行定位,找到要操作的具体位置,才能执行增删改。由于数组可以直接定位,查询性能最高,直接带动增删改的性能都非常高。而有些其他结构,无法直接定位,需要逐个查找,整体性能会逊色很多,以后会具体讲。

数组特性

为了保证高效的查询,可以推导出数组的特性:
  • 数组中元素类型必须一致,这样才能保证每个元素的长度一致。否则寻址公式无效。
  • 数组长度是固定的,因为要计算内存地址,数组必须连续存储。而数组前后的内存有可能被其他数据占用,导致数组长度无法扩容。

应用场景

由于数组的高性能,在通用场景下第一选择就是数组。如果你看过spring源码,你会发现遍地都是数组,spring的原则是能用数组就不会去用集合,其实我们也应该这样。但是上面说了,数组的使用是有一些限制的,比如无法扩容。遇到这样的场景要如何应对?下篇再讲
【TC3xx芯片】TC3xx芯片PFlash的ECC校验问题补充 TC3xx芯片PFlash的ECC校验问题补充 阅读详情

相关推荐

ansys命令流力磁耦合仿真

文章目录前言一、力磁耦合仿真流程二、静力学仿真三、力磁耦合模型构建四、静磁学仿真总结 前言 一、力磁耦合仿真流程 力磁耦合有限元仿真流程中,首先进行静力学仿真,经过前处理模块、分析计算模块和后处理模块提取三维模型单元应力,然后根据力磁耦合方程中,通过matlab将单元应力导入到磁导率与应力的关系式中,得到单元的相对磁导率。最后采用载荷传递耦合方式,进行静磁学模拟仿真,分析计算得到该载荷下试件的磁场分布。,如下图所示为力磁耦合仿真流程图: 二、静力学仿真 下图为中心预制条形缺陷的Q235钢板试..

wsfwsf128的博客 2663

java中常见数据结构

java中常见的数据结构

gengpengfeiazxl的博客 5179

四阶龙格库塔方法求解一次常微分方程组

四阶龙格库塔方法求解一次常微分方程组一、写在前面二、四阶龙格库塔方法三、使用四阶龙格库塔方法求解一次常微分方程组 一、写在前面 龙格库塔方法是数值求解常微分非线性方程的有利工具,计算精度较高,通过缩短步进距离和增加阶数可以进一步控制误差范围。工程上较为常用的是四阶龙格库塔算法(R-K4),在计算收敛的情况下往往可以得到比较好的结果。 二、四阶龙格库塔方法 这里简单介绍一下算法的具体实现过程,不做详细的推导。其求解的问题是形如方程: y˙=f(y,t),其中t∈[t0,t1]初值y(t0)=c0 \dot{y

HelloWorldTM的博客 2万+

Java数据结构

对于Java数据结构知识点的整理,对新手比较友好。

m0_73966775的博客 1万+

国产数据库迁移必看:达梦到ES的CDC方案优化全记录(含完整代码)

本文详细记录了从达梦数据库到Elasticsearch的CDC方案优化全过程,涵盖触发器方案局限性、Debezium架构优势及完整代码实现。通过Flink集成和性能调优,实现毫秒级延迟同步,显著降低数据库负载,为国产数据库迁移提供可落地的技术方案。

weixin_29079671的博客 500

ads设计Doherty功放(1)

Doherty功放的设计

qq_40995480的博客 2万+

java常见的8种数据结构

红黑树的创建:节点的初始颜色为红色。2.2。

weixin_51326478的博客 1万+

ENVI_基于无人机数据的果树提取与相对健康监测

一、数据处理 1.计算植被指数VDVI或GDVI:Band Math / Spectral Indices 2.制作掩膜:ROI——Threshold——Subset 二、单地块果树提取 1.绘制感兴趣区shp 2.确定果树提取参数:Count Crops 3.输出果树矢量文件:Convert Crops To Shapefile 4.果树相对健康程度分析:Calculate Crop Me...

提供技术服务、资源分享 429690771 1400

一文彻底搞懂Java数据结构

在Java中,数据结构一般可以分为两大类 1.线性数据结构: 线性数据结构是指数据元素之间存在一对一的关系,即每个元素都有一个前驱和一个后继元素,形成线性序列。 2.非线性数据结构: 非线性数据结构是指数据元素之间存在一对多或多对多的关系,形成非线性结构。

永远在路上 7561

刷爆 Java 基础!1000 道经典面试题精解第一篇【序列化】

自定义序列化 / 反序列化的实现方式在实现接口的类中,手动重写和方法在方法内优先调用执行默认序列化逻辑;追加自定义逻辑(如敏感数据加密、临时字段赋值、兼容旧版本数据等)。// 序列化ID,保证兼容性// 敏感字段,默认不序列化,自定义处理// 自定义序列化// 执行默认序列化:写入username// 自定义逻辑:密码加密后写入// 自定义反序列化// 执行默认反序列化:读取username// 自定义逻辑:读取加密密码并解密// 模拟加密/解密工具方法。

七叔的博客 193

Unity零基础到入门 ☀️| 【UI系统学习】轻松学会 Unity 的 UGUI基础控件的使用(包括一个简易血条、蓝条设计)

Unity,UGUI。本篇博客来挑几种Unity中最常用的UI控件如何使用和使用技巧,包括一个简易血条蓝条的小实例

努力前行,总会成为自己心中的那道光 2万+

JAVA常见的8种数据结构

java中常见的8种数据结构,Array、Linked List、Stark、Hash、Queue、Tree、Heap、Graph

m554062212的博客 1万+

杰理JL701N V142的SDK实现双备份自定义OTA教程和代码分享

摘要 本文档详细介绍了基于JL701N SDK的UART OTA升级功能开发方案。该方案采用双备份(Dual Bank)机制,通过串口实现安全可靠的固件远程更新。核心特性包括:1) 双备份升级机制确保升级失败可回滚;2) CRC-16/XMODEM校验保障数据完整性;3) 灵活的传输控制,支持自定义波特率和数据包大小。文档提供了完整的系统架构、API接口说明、通信协议规范以及移植指南,适用于生产烧录、现场升级等多种场景。配套Python升级工具简化了升级流程,使开发人员能够快速实现固件更新功能。

qq_42014563的博客 278

Java数据结构(3)- 数组

1、容器 容器:什么是容器,容器是一种基础工具。泛指任何可以用于容纳其它物品的工具,可以部分或完全封闭,被用于容纳、储存、运输物品。物体可以被放置在容器中,而容器则可以保护内容物。通俗一点讲,就是用来装东西的,可以存放物体。而再java’语言当中什么是容器,容器就是用来装数据的,存储数据的容器。 2、数组 何为数组,从字面上来理解,就是一组数字,一组数据。数组作为一种基本容器,可以在jvm虚...

何忆清风 8万+

汉书HE8,好用的汇编代码编写工具

汉书HE8,好用的汇编代码编写工具早期编写汇编代码所用功能强大

Statistics and Machine Learning Toolbox

Statistics and Machine Learning Toolbox(带书签),MATLAB统计学习工具

【Java 数据结构 & 算法】宁可累死自己, 也要卷死别人 3 数组

【Java 数据结构 & 算法】⚠️宁可累死自己, 也要卷死别人 3⚠️ 数组.

我是小白呀的博客 3436

win10 跳过U8环境检测的IE WebControls.rar

win10 安装u8的时候 提示IE WebControls 不通过,这个工具可以欺骗u8的检查。 跳过U8环境检测的IE WebControls。提示导入失败后,重新检测通过。

Java 中的数据结构和算法,第 3 部分:多维数组

本教程向您介绍了多维数组以及在 Java 程序中创建和使用它们的技术。我向您展示了如何使用矩阵乘法算法来解决涉及一对二维数组的编程挑战。我还介绍了参差不齐的数组并解释了为什么它们对大数据应用程序特别有价值。最后,我解决了数组是否是 Java 中的对象的问题。揭示隐藏的类表明数组确实是对象,具有从java.lang.Object.

ITnababy的博客 556

STM32F407中文手册

STM32f407中文手册 本参考手册面向应用开发人员,提供有关使用 STM32F405xx/07xx、STM32F415xx/17xx、 STM32F42xxx 和 STM32F43xxx 微控制器存储器与外设的完整信息。STM32F405xx/07xx、STM32F415xx/17xx、STM32F42xxx 和 STM32F43xxx 构成一个微 控制器系列,各产品具有不同的存储器大小、封装和外设。有关订购信息以及器件的机械与电气特性,请参见数据手册。有关 ARM Cortex™-M4F 内核的信息,请参见《Cortex™-M4F 技术参考手册》。

Java数据结构和算法1概述、2数据结构、3稀疏数组和队列

Java数据结构和算法 第1章:概述 程序=算法+数据结构 第2章:数据结构 线性结构: 数据元素之间存在一对一的线性关系 顺序存储结构 顺序存储的线性表称为顺序表,顺序表中的存储元素是连续的 链式存储结构 链式存储的线性表称为链表,链表中的存储元素不一定是连续的,元素节点中存放数据元素以及相邻元素的地址信息 线性结构常见的:数组、队列、链表和栈 非线性结构: 二维数组,多维数组,广义表,树结构,图结构 第3章:稀疏数组和队列 1、稀疏数组 当一个数组中大部分元素为0,或者为同一个值的数组时,可以使用稀

qq_43349162的博客 223

3-数据结构数组实现队列思路和java代码实现

尚硅谷韩顺平Java数据结构与算法 队列 队列使用场景 排队 队列基本介绍 队列是一个有序列表,可以使用数组或链表来实现 遵循先进先出的原则 数组实现队列 总体思路 队列本身是有序数列,定义变量maxSize记录队列最大容量 队列的输出输入分别是由前后端来处理的,因此需要定义变量front和rear来记录前后端的下标,front会随着数据的输出而变化,rear会随着数据的输入而变化。 添加数据方法思路 定义方法addQueue(value); 判断队列是否满 rear == .

weixin_43311669的博客 336

java链表实现三维数组_3. 最常使用数据结构-数组

数组时候是一种非常基础的数据结构,每种编程语言都会有。数组的内存「数组是一种线性表数据结构。使用的是一组连续的内存空间,存储一组相同类型的数据」。部分编程语言可存储不同类型数据,如 JavaScript从定义来看:是一个线性表线性表上的数据元素有前后两个方向,连续成线性结构。数组,链表,队列,栈都是线性表结构。而与之对应的就是非线性表结构了,如二叉树,堆,图这些。数据之间不再是简单的前后关系。连续...

weixin_39700397的博客 258

java 剑指offer之[数据结构 简单]JZ3 数组中重复的数字

题目的链接在这里:https://www.nowcoder.com/practice/6fe361ede7e54db1b84adc81d09d8524 目录题目大意一、示意图二、解题思路数据结构 题目大意 在一个长度为n的数组里的所有数字都在0到n-1的范围内。 数组中某些数字是重复的,但不知道有几个数字是重复的。也不知道每个数字重复几次。请找出数组中任一一个重复的数字。 例如,如果输入长度为7的数组[2,3,1,0,2,5,3],那么对应的输出是2或者3。存在不合法的输入的话输出-1 一、示意图

wzw的博客 103

Java常见笔试题3:从java数组到java的数据结构

学习java的数据结构都是从基础的数组开始的,大多数时候我们都是从下面开始,学数组,学集合,学Map,这一次我们从上到下的学,从最高处的Collection和Map往下学。Collection下主要包含两类的集合,一个是List(接口),一个是Set(接口),最基本的区别就在于List元素可重复,Set元素不可重复。Collection:是高度抽象的集合接口,存的是单个的数据。Map:是抽象的映射接口,存的是键值对。

weixin_44131265的博客 187

Java数据结构与算法———(3)用数组模拟一个队列

用数组模拟一个队列,缺点是不能重复使用 一、代码: import java.util.Scanner; public class ArrayQueueDemo { public static void main(String[] args) { // 创建一个队列 ArrayQueue queue = new ArrayQueue(3);// 创建一个包含三个数据的队列 char key = ' ';// 接收用户输入,此时key的值是空格 Scanner scanner = new

GTboy100的博客 288

Java数据结构和算法-3、稀疏数组和队列

第3章:稀疏数组和队列 稀疏数组 当一个数组中大部分元素为0,或者为同一个值的数组时,可以使用稀疏数组来保存该数组。 稀疏数组的处理方法是: 记录数组一共有几行几列,有多少个不同的值 把具有不同值的元素的行列及值记录在一个小规模的数组中,从而缩小程序的规模 二维数组转稀疏数组 遍历原始二维数组,得到有效数据个数sum 根据sum就可以创建稀疏数组sparseArr int[sum+1][3] 将二维数组的有效数据存入到稀疏数组 稀疏数组转二维数组 读取稀疏数组第一行,根据第一行的数据,创建二维

qq_43349162的博客 331

数据结构(Java)——Day3(动态数组_上)

数据结构(Java)——Day3(动态数组_上)

LengchenAl的博客 212

数据结构(3):java使用数组模拟堆栈

   堆栈原理:          数组模拟堆栈:  //数组模拟栈 class ArrayStack{ //栈顶 private int top = -1; private int maxSize; private int[] arrayStack; public ArrayStack(int maxSize){ this.maxSi...

玲珑安全的博客 54

数据结构数组、栈和队列(Java算法和数据结构总结笔记)[3/20]

数组的概念 数组(Array)是有序的元素序列。[1]若将有限个类型相同的变量的集合命名,那么这个名称为数组名。组成数组的各个变量称为数组的分量,也称为数组的元素,有时也称为下标变量。用于区分数组的各个元素的数字编号称为下标。数组是在程序设计中,为了处理方便, 把具有相同类型的若干元素按有序的形式组织起来的一种形式。[1]这些有序排列的同类数据元素的集合称为数组。 数组是用于储存多个相同类型数据的集合 ...

川子的博客 1342
上一篇: Java数据结构(1)-前言
下一篇: Java数据结构(4)-ArrayList
free_java
博客等级 码龄10年 664粉丝 131原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值