繁体   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