簡體   English   中英

如何創建自己的高效數據結構?

[英]How to create my own efficient data structure?

我正在制作一個程序,我需要保存不重復的對象,並且必須將其分類到數據結構中。 訪問,修改和刪除對象必須非常有效。

首先,我考慮制作一個Map <String,Object>,其中鍵是對象的名稱(屬性)。 但我的老師告訴我這是低效的,因為我復制內容,我應該創建自己的結構而不使用列表,向量,或者至少不是直接,也就是說,我必須覆蓋實現。

但我不知道從哪里開始,什么是一個好的選擇。 您有什么建議讓我以有效的方式通過其名稱訪問對象?

謝謝!

你沒有提到它需要多高效,所以我假設你需要一個TreeSet

你提到的操作是在log(n)中完成的

從擴展Set開始(因為你不想重復任何對象)

如果我理解正確,您希望將對象的唯一字符串名稱映射到對象引用,並且您希望能夠有效(比O(n)更快)。

排序數組允許O(log n)插入,搜索和線性時間刪除。 平衡的BST允許O(log n)插入,搜索和刪除。 簡單字典( HashTable )允許O(1)分期插入,搜索和刪除,但字典內容無法有效枚舉(Java允許字典內容以一些無意義的哈希順序進行枚舉)。 如果需要按排序順序枚舉對象,則更有效的方法是維護已排序的對象鏈接列表(按名稱),並使用字典將名稱映射到O(1)分攤查找的首選列表條目。

如前所述, TreeSet是使用Java庫的堅實起點。

您可能需要LinkedHashMap。 這是一個可以迭代的保持順序的哈希映射。

暫無
暫無

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

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