我想在一个明确的清单中回答两个问题:
所以,我读过Redis列表实际上是用链表实现的.但对于其他类型,我无法挖掘任何信息.此外,如果有人偶然发现了这个问题并且没有对修改或访问不同数据结构的优缺点进行高级概述,那么他们就会有一个完整的列表,列出何时最好地使用特定类型来引用.
具体来说,我想概述所有类型:字符串,列表,集,zset和哈希.
哦,到目前为止,我已经看过这些文章,其中包括:
在b树中,您可以将密钥和数据存储在内部和叶节点中,但是在b +树中,您必须仅将数据存储在叶节点中.
在b +树中执行上述操作有什么好处吗?
为什么不在任何地方使用b-trees而不是b + tree,直觉上它们似乎更快?
我的意思是,为什么你需要在b +树中复制密钥(数据)?
我什么时候应该使用字典,列表或设置?
是否存在更适合每种数据类型的方案?
我很感兴趣:C#std::pair在C++中的模拟是什么?我找到了System.Web.UI.Pair课程,但我更喜欢基于模板的课程.
谢谢!
有谁知道如何实现python的内置字典类型?我的理解是它是某种哈希表,但我无法找到任何确定的答案.
我在C#中寻找树或图形数据结构,但我想没有提供.对数据结构的广泛检查使用C#2.0解释了一些原因.是否有一个方便的库,通常用于提供此功能?也许通过策略模式来解决文章中提出的问题.
我觉得实现自己的树有点傻,就像我实现自己的ArrayList一样.
我只想要一个可以不平衡的通用树.想一下目录树.C5看起来很漂亮,但它们的树结构似乎被实现为更适合搜索的平衡红黑树而不是表示节点的层次结构.
我确定这是一个很好的理由,但有人可以解释为什么java.util.Set界面缺乏get(int Index),或任何类似的get()方法?
似乎套装非常适合放入物品,但我找不到从中检索单个物品的优雅方式.
如果我知道我想要第一个项目,我可以使用set.iterator().next(),但是否则我似乎必须转换为数组来检索特定索引处的项目?
从集合中检索数据的适当方法是什么?(除了使用迭代器)
我确信它被排除在API之外意味着有一个很好的理由不这样做 - 有人可以开导我吗?
编辑: 这里有一些非常好的答案,还有一些说"更多背景".特定场景是一个dbUnit测试,我可以合理地断言查询返回的集只有一个项目,我试图访问该项目.
但是,没有这种情况,这个问题更有效,因为它仍然更受关注:
集合和列表之间有什么区别.
感谢所有人在下面的精彩答案.
这是算法理论中的一个简单问题.
它们之间的区别在于,在一种情况下,您可以计算根节点和具体节点之间最短路径上的节点数和其他边数.
哪个是哪个?
我最近遇到了称为跳过列表的数据结构.它似乎与二叉搜索树具有非常相似的行为.
为什么你想在二叉搜索树上使用跳过列表?
language-agnostic algorithm binary-tree skip-lists data-structures
data-structures ×10
algorithm ×3
dictionary ×3
c# ×2
python ×2
set ×2
.net ×1
binary-tree ×1
collections ×1
database ×1
java ×1
list ×1
nodes ×1
redis ×1
skip-lists ×1
std-pair ×1
terminology ×1
tree ×1
vb6 ×1
vba ×1