Questions tagged «data-structures»

数据结构是以一种组织数据的方式,该方式允许有效地查询和/或更新该数据的特定属性。


17
等效于JavaScript Hashmap
正如在此答案的更新3中明确指出的那样,该表示法: var hash = {}; hash[X] 实际上不哈希对象X;它实际上只是转换X为字符串(通过.toString()它是对象还是其他各种原始类型的内置转换),然后在“ hash”中查找该字符串,而不对其进行哈希处理。也不会检查对象是否相等-如果两个不同的对象具有相同的字符串转换,则它们将彼此覆盖。 鉴于此-在JavaScript中是否有任何有效的hashmap实现?(例如,第二个Google结果javascript hashmap产生的实现对任何操作都是O(n)。其他各种结果都忽略了具有等效字符串表示形式的不同对象相互覆盖的事实。

16
为什么哈希函数应使用质数模数?
很久以前,我花了1.25美元从讲价表上买了一本数据结构书。在其中,对散列函数的解释说,由于“数学的性质”,它最终应按质数进行模运算。 您对1.25美元的书有什么期待? 无论如何,我已经花了很多年考虑数学的本质,但仍然无法弄清楚。 即使存储桶数是素数,数字的分布确实真的更多吗?还是这是每个人都因为别人都接受而接受的古老程序员的故事?


12
如何正确使用R中的列表?
简要背景:广泛使用的许多(大多数?)当代编程语言至少都具有一些共同的ADT(抽象数据类型),特别是, 字符串(由字符组成的序列) 列表(值的有序集合),以及 基于映射的类型(将键映射到值的无序数组) 在R编程语言中,前两个分别作为character和实现vector。 当我开始学习R时,几乎从一开始就显而易见两件事:list是R中最重要的数据类型(因为它是R的父类data.frame),第二,我至少不了解它们的工作方式,至少不够好,无法在我的代码中正确使用它们。 一方面,在我看来,R的list数据类型是对映射ADT的简单实现(dictionary在Python,NSMutableDictionaryObjective C,hashPerl和Ruby,object literalJavascript等中)。 例如,通过将键值对传递给构造函数(在Python中dict不是list)来创建它们,就像创建Python字典一样: x = list("ev1"=10, "ev2"=15, "rv"="Group 1") 然后您就可以像访问Python词典那样访问R列表中的项目,例如x['ev1']。同样,您可以通过以下方式仅检索“键”或“值”: names(x) # fetch just the 'keys' of an R list # [1] "ev1" "ev2" "rv" unlist(x) # fetch just the 'values' of an R list # ev1 ev2 rv # "10" "15" "Group …

3
Redis的底层数据结构是什么?
我试图在一个明确的列表中回答两个问题: Redis的底层数据结构是什么? 每种类型的主要优点/缺点/用例是什么? 因此,我读过Redis列表实际上是用链接列表实现的。但是对于其他类型,我无法提取任何信息。同样,如果有人偶然发现了这个问题,而又对修改或访问不同数据结构的优缺点没有一个高层次的总结,那么他们将有完整的清单,列出何时可以最佳地使用特定类型进行引用。 具体来说,我希望概述所有类型:字符串,列表,集合,zset和哈希。 到目前为止,我已经看过这些文章,其中包括: http://redis.io/topics/data-types http://redis.io/topics/data-types-intro http://redis.io/topics/faq



14
B树和B +树之间有什么区别?
在b树中,您可以将密钥和数据存储在内部节点和叶节点中,但是在b +树中,您只需将数据存储在叶节点中。 在b +树中执行上述操作是否有任何优势? 为什么不在各处都使用b树而不是b +树,因为从直观上看它们似乎快得多? 我的意思是,为什么您需要在b +树中复制密钥(数据)?




19
C#中的树数据结构
我在C#中寻找树或图的数据结构,但我猜没有提供。使用C#2.0进行的数据结构的广泛检查解释了一些原因。是否有一个方便使用的库通常用于提供此功能?也许可以通过一种策略模式来解决本文中提出的问题。 我实现自己的树有点愚蠢,就像实现自己的ArrayList一样。 我只想要可以不平衡的通用树。想一想目录树。C5看起来很漂亮,但是它们的树结构似乎被实现为平衡的红黑树,比表示节点的层次结构更适合于搜索。

18
为什么java.util.Set没有get(int index)?
我确信这是有充分理由的,但是有人可以解释一下为什么java.util.Set缺少接口get(int Index)或任何类似get()方法吗? 集合似乎很适合放入东西,但是我找不到从其中检索单个项目的优雅方法。 如果我知道我想要第一个项目,则可以使用set.iterator().next(),但否则似乎必须强制转换为Array才能在特定索引处检索项目? 从集合中检索数据的适当方法是什么?(除了使用迭代器之外) 我敢肯定,将其排除在API之外的事实意味着有充分的理由不这样做-有人可以启发我吗? 编辑: 这里有一些非常好的答案,有的说“更多的上下文”。具体情况是dbUnit测试,在这里我可以合理地断言从查询返回的集合只有1个项目,而我试图访问该项目。 但是,如果没有这种情况,这个问题会更有效,因为它仍然更加集中: set和list有什么区别。 感谢所有以下出色的答案。


By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.