什么数据结构即可以有序遍历又可以快速查找?

2015-10-27 12:34:31 +08:00
 heloman

要存储的数据格式为(int id, int time, string name),现需要:

1 , 能够按 time 顺序遍历
2 , 能够快速使用 id 删除对应的 time 和 name

请问什么数据结构能够实现这个目标?使用 c#,最好利用自有的数据结构 3q~

3101 次点击
所在节点    问与答
10 条回复
FrankFang128
2015-10-27 12:49:58 +08:00
SQL 数据库哇……
xi_lin
2015-10-27 13:13:15 +08:00
存两份。。
c742435
2015-10-27 13:19:25 +08:00
存两份靠谱
wshcdr
2015-10-27 13:41:54 +08:00
C# ArrayList
nathanw
2015-10-27 13:59:28 +08:00
散列表
pi1ot
2015-10-27 14:01:26 +08:00
听起来类似 memcached ,可以一套数据,两套索引。
PublicID
2015-10-27 14:01:49 +08:00
Time->name RBT
Id->time RBT/HASH

数据规模多少?
heloman
2015-10-27 14:21:48 +08:00
@nathanw 具体怎么做呢?

@pi1ot
@PublicID

3q ,数据规模应该不超过 10k ,还有忘了说了一点,添加新数据的时间就是 time

两套索引的办法确实不错!
如果两套结构的话,倒是想起来一个办法:可以做一个 queue ,按照数据产生时间插入 queue ,再多余存储一个可用 id 的 set ,删除时只删除 set 中的 id ,遍历时检查 id ,如果不在 set 中则从 queue 中删除
caoyue
2015-10-27 14:58:32 +08:00
@heloman
「添加新数据的时间就是 time 」
或许你可以看看 OrderedDictionary
WalkingEraser
2015-10-27 16:37:34 +08:00
Java 的 LinkedHashMap ,(手动斜眼

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/231394

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX