Data structures 具有进一步插入的升序键值对的数据结构

Data structures 具有进一步插入的升序键值对的数据结构,data-structures,linked-list,treemap,linkedhashmap,Data Structures,Linked List,Treemap,Linkedhashmap,我正在实现一个表,其中每个条目由两个整数组成。条目必须按键按升序排列(根据每组的第一个整数)。当程序运行时,所有元素都将添加到表中,并且必须放入适当的插槽中。时间复杂性是最重要的,我将只使用insert、remove和iterate函数 哪种Java数据结构最适合此实现 我在考虑LinkedHashMap,因为它将键映射到值(表中的每个条目都是两个值)。它还提供O(1)插入/删除功能。但是,它没有被排序。如果条目能够在输入时以适当的顺序有效地插入,这不是一个坏主意,因为数据结构将被排序。但我还没

我正在实现一个表,其中每个条目由两个整数组成。条目必须按键按升序排列(根据每组的第一个整数)。当程序运行时,所有元素都将添加到表中,并且必须放入适当的插槽中。时间复杂性是最重要的,我将只使用insert、remove和iterate函数

哪种Java数据结构最适合此实现

我在考虑LinkedHashMap,因为它将键映射到值(表中的每个条目都是两个值)。它还提供O(1)插入/删除功能。但是,它没有被排序。如果条目能够在输入时以适当的顺序有效地插入,这不是一个坏主意,因为数据结构将被排序。但我还没有读到或想到一个有效的方法来做到这一点。(可能像一个比较器)

对于添加和删除,TreeMap的时间复杂度都是log(n)。它保持排序顺序,并有一个迭代器。但是我们能比log(n)做得更好吗

LinkedList具有0(1)个添加/删除。我可以插入一个循环,但这似乎也是低效的

看来TreeMap是一个不错的选择。但我不确定

非常感谢您对本程序理想数据结构的任何想法。如果我错过了一个明显的答案,请让我知道


(它可以是带有设置接口的数据结构,因为不会有重复项。)

a
键值
对建议用于
映射
。当您需要基于
键的排序时,它将缩小为
分类地图
,在您的示例中是
树地图
。就在数据结构中保持排序元素而言,它不可能比O(logn)更好。别再看了

基本思想是需要将钥匙插入正确的位置。为此,您的代码需要搜索“适当的位置”。现在,对于这样的搜索,你不能比二进制搜索更好,这就是
log(n)
,这就是为什么我认为你不能比
log(n)
更好地执行插入

因此,我建议您再次使用
TreeMap


此外,如果可以枚举您声明的散列值(特别是因为没有重复的散列值)(如整数、序列号等),您可以尝试使用静态分配的数组来执行此操作。那么您可能会得到
O(1)
的复杂度

不清楚您是否要按照
插入顺序
对条目进行排序?我希望按键排序。当程序运行时,我将向表中插入新的输入项。