作者:雷神鑫源义_341 | 来源:互联网 | 2023-05-23 20:36
我知道什么是数组以及如何使用它们.但是,我不知道它们是如何实现的.我试图弄清楚我是否可以尝试使用Java实现类似数组的数据结构,但我不能.
我在网上搜索但没有找到任何有用的东西.
甚至可以在Java中实现类似数组的数据结构吗?是否可以用其他语言?如果是这样的话(当然没有使用数组)?
编辑:我想知道的是如何在不使用数组的情况下实现数组数据结构?
1> npinti..:
数组是内存中的连续部分,因此要创建一个数组,你需要保留一个大小的内存块n * sizeof(type)
,其中n
是你想要存储的项目数量,sizeof(type)
它将返回大小,以JVM为单位的字节数需要表示给定的类型.
然后,您可以将引用(指针)存储到内存段的第一个位置0x00
,然后使用它作为基础来了解移动访问元素需要多少,因此a[n]
等于执行操作0x00 + (n * sizeof(type))
.
尝试在Java中实现它的问题是Java不允许指针操作,所以我不认为构建自己的数组类型是可能的,因为你不能达到那个级别.
话虽这么说,您应该能够创建一个链接的数据结构,其中nth
元素指向(n + 1)th
元素.
您应该尝试其他语言的其他问题,例如C#
(检查unsafe
操作),C++
或C
:
据我所知,Java没有sizeof
函数(见这个).
Java不允许operator overloading
.因此,您无法定义自己的索引运算符,例如[index]
.您可能需要做一些事情array.getElementAt(0)
来获得第一个元素.
正如@ug_推荐的那样,你可以看一下Unsafe类.但正如他所推荐的那样,我认为你不应该用一种将指针抽象作为其核心思想之一的语言进行指针运算.