即使添加/删除项目,我如何在列表中散列我的对象的位置

时间:2017-05-23 03:51:43

标签: c# dictionary time-complexity

我有一个列表和一个字典组合,其中我的字典中包含一个int值,该值基本上是列表中的位置。像这样:

Dictionary = new Dictionary<Vector3, int>();
List = new List<Node>();

//getting an item from the list by position
return List[Dictionary[myPosition]];

问题是我在列表中添加/删除因此项目的索引位置正在发生变化,这在极少数情况下会导致2个具有相同索引位置的项目,因为它过于复杂以更新整个字典以减少每个项目& #39;如果我删除一个项目,则索引为1.

所以我需要一些其他的字典链接到节点,所以我的查找是 O(1)

此时我有什么选择来实现这一目标?我试图避免 O(n)使用for循环按位置查找项目,这是我试图避免的最后一种情况。

那么我该怎么办呢?

1 个答案:

答案 0 :(得分:3)

为什么不直接将字典映射到您正在寻找的价值?:

Dictionary = new Dictionary<Vector3, Node>();

没有索引,没有额外的步骤,直接访问。