如何创建自己的高效数据结构?

时间:2014-04-06 21:17:58

标签: java data-structures

我制作的程序中我需要保存不重复的对象,并且必须将其分类为数据结构。访问,修改和删除对象必须非常有效。

首先我想到制作一张地图<字符串,对象>其中键是对象的名称(属性)。但是我的老师告诉我这是低效的,因为我复制了内容,我不得不创建自己的结构,而不使用列表,向量,或者至少不是直接,也就是说,我必须覆盖实现。

但我不知道从哪里开始,什么是好的选择。您有什么建议让我以有效的方式通过其名称访问该对象?

谢谢!

4 个答案:

答案 0 :(得分:1)

你没有提到它需要多高效,所以我假设你需要TreeSet

您提到的操作是在log(n)

中完成的

答案 1 :(得分:1)

从扩展Set开始(因为你不想重复任何对象)

答案 2 :(得分:0)

如果我理解正确,您希望将对象的唯一字符串名称映射到对象引用,并且您希望能够有效(比O(n)更快)。

排序数组允许O(log n)插入,搜索和线性时间删除。 平衡的BST允许O(log n)插入,搜索和删除。 简单字典(HashTable)允许O(1)分期插入,搜索和删除,但字典内容无法有效枚举(Java允许字典内容以一些无意义的哈希顺序进行枚举)。 如果需要按排序顺序枚举对象,则更有效的方法是维护已排序的对象链接列表(按名称),并使用字典将名称映射到O(1)分摊查找的首选列表条目。

如前所述,TreeSet是使用Java库的坚实起点。

答案 3 :(得分:0)

您可能需要LinkedHashMap。这是一个可以迭代的保持顺序的哈希映射。