最快的数据结构用于插入数据,而非搜索。

3

请问哪种数据结构最适合快速插入数据?我的需求是加载人名,并以超快的速度检索它们。没有排序、搜索特定名称等问题,甚至不考虑内存,因为总人数可能不超过20人。唯一的要求是在稍后阶段加载人员并检索姓名。

有人知道吗?


1
哈希表应该就够了,其他的似乎有些过度设计。 - squiguy
1
既然您已经知道了上限,静态数组对我来说似乎是一个不错的选择。@squiguy- 为什么要使用哈希表?他并没有使用名称作为键进行搜索。 - vidit
获取名称在... -相同的顺序? -任何顺序都可以吗? -特定的名称? - Patashu
3个回答

10
半开玩笑的回答:如果你只是进行插入操作而不做其他操作,那么最简单的数据结构就是什么都不用 - 不存储任何东西。这样做插入操作就瞬间完成了,因为你完全不需要做任何事情来进行插入。
更现实的回答:如果你只想尽可能快地存储一堆数据,并且你有总元素个数的上限,那么就使用一个数组,并跟踪下一个可用的索引。如果数组存储元素指针,则每次插入操作就是指针赋值加上下一个可用索引的增量。如果你在存储副本,则每次插入操作都会复制一份(无论如何都必须这样做),并增加一个计数器。由于任何存储元素的结构都必须存储一个指针或其副本,因此开销只是一个增量,我非常自信它是最便宜的。
希望这有所帮助!

1
除了舌头在口中的答案(这是我第一个想法),如果你最多有20个人,只需使用一个数组。

谢谢大家。我想数组会是我的答案。我很惊讶你们能够立即回答我的问题。太神奇了! - user2502162

0

如果您确定总对象/节点始终少于20,则数组是最好的选择。使用数组中的索引进行检索,速度最快。 如果您不确定数据结构的大小,则建议使用列表,因为在列表中插入是最快的,前提是您不需要插入顺序。如果需要插入顺序,则选择链表。 哈希表可能不是一个选项,因为它具有额外的同步开销,在这里不需要。 如果您想避免重复并且不担心检索顺序,则可以使用Set接口。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接