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

Java 如何创建自己的高效数据结构?,java,data-structures,Java,Data Structures,我正在制作一个程序,在其中我需要保存不重复的对象,并且必须将其排序到数据结构中。访问、修改和移除对象必须非常有效 首先,我考虑制作一个映射,其中键是对象的名称(属性)。但我的老师告诉我这是低效的,因为我在复制内容,我应该创建自己的结构,而不使用列表、向量。。或者至少不是直接的,也就是说,我必须覆盖实现 但我不知道从哪里开始,什么是好的选择。您会给我什么建议,让我以有效的方式通过对象的名称访问该对象 谢谢 您没有提到它需要有多高的效率,所以我假设您需要一个TreeSet 您提到的操作是在log(n

我正在制作一个程序,在其中我需要保存不重复的对象,并且必须将其排序到数据结构中。访问、修改和移除对象必须非常有效

首先,我考虑制作一个映射,其中键是对象的名称(属性)。但我的老师告诉我这是低效的,因为我在复制内容,我应该创建自己的结构,而不使用列表、向量。。或者至少不是直接的,也就是说,我必须覆盖实现

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


谢谢

您没有提到它需要有多高的效率,所以我假设您需要一个
TreeSet


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

中完成的,从扩展集合开始(因为您不希望重复任何对象)

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

排序数组允许O(logn)插入、搜索和线性时间删除。 平衡的BST允许O(日志n)插入、搜索和删除。 一个简单的字典(
HashTable
)允许O(1)分期插入、搜索和删除,但字典内容无法有效地枚举(Java允许以某种毫无意义的哈希顺序枚举字典内容)。 如果需要按排序顺序枚举对象,一种更有效的方法是维护对象的排序链表(按名称),并使用字典将名称映射到喜欢的列表项,以进行O(1)分期查找


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

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

您正在寻找的接口是一个树集是其实现的接口。
列表和
集之间的区别是什么?