簡體   English   中英

如何使用Java實現類似數組的數據結構?

[英]How to implement an array-like data structure using Java?

我知道什么是數組以及如何使用它們。 但是,我不知道它們是如何實現的。 我試圖找出是否可以嘗試使用Java實現類似數組的數據結構,但我做不到。

我已經在網上搜索過,但沒有發現任何有用的信息。

甚至有可能在Java中實現類似數組的數據結構嗎? 可以使用其他語言嗎? 如果是這樣,怎么做(當然不使用數組)?

編輯:我想知道的是如何在不使用數組的情況下實現數組數據結構?

數組是內存中的連續部分,因此要創建數組,您需要保留一塊大小為n * sizeof(type)的內存,其中n是您要存儲的項目數量以及sizeof(type)將返回大小,以字節為單位,JVM需要用字節來表示該給定類型。

然后,您將對內存段的第一個位置(例如0x00 )存儲一個引用(指針),然后將其用作基礎來了解訪問元素所需的移動量,因此a[n]等於做0x00 + (n * sizeof(type))

嘗試在Java中實現此問題的原因是Java不允許指針操作,因此我認為無法構建自己的數組類型,因為您無法降低到該級別。

就是說,您應該能夠創建一個鏈接數據結構,其中第nth元素指向第(n + 1)th元素。

為什么您應該嘗試其他語言的其他問題,例如C# (檢查unsafe操作), C++C

  1. 據我所知,Java不具有sizeof函數(見 )。
  2. Java不允許operator overloading 因此,您無法定義自己的索引運算符,例如[index] 您可能需要執行諸如array.getElementAt(0)才能獲取第一個元素。

按照@ug_的建議,您可以看一下Unsafe類。 但是也正如他所建議的那樣,我不認為您應該使用將指針抽象作為其核心思想之一的語言來進行指針算術。

如果您想要的是這樣的東西:

MyArray ma = new MyArray(length);
ma[0] = value;

然后,您將無法使用Java執行此操作,但是可以使用其他語言。 查找“操作員超載”。

我想知道您是否想到了結構,向量或鏈接列表。 這些都與數組相似,但有所不同。

在Java中並不是真正的結構,但是您可以實現它們。

在此處閱讀有關Structs的內容:www.cplusplus.com/doc/tutorial/structures/

Java中使用的示例結構:在Java中創建類似於數據結構的結構

我認為您真正要尋找的是向量。 它們與數組非常相似,但不是一個。

載體信息:www.cplusplus.com/reference/vector/vector/

數組與向量的比較: https : //softwareengineering.stackexchange.com/questions/207308/java-why-do-we-call-an-array-a-vector

我建議一個鏈接列表。 它有點像數組的想法,但不知道您的確切大小。 易於實現。

鏈接列表:en.wikipedia.org/wiki/Linked_list

所有這些都取決於需要它們的情況。 說,“我想知道的是如何在不使用數組的情況下實現數組數據結構?” 有點開放。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM