新人在这里。几天来我一直在网上搜索,找不到一个像样的结构来自动排序数据(如 SortedSet),同时仍然允许访问该数据(如 List)。这是我拥有的:
包含 100,000 个节点的列表,定期添加和修改。
List<Nodes> nodes;
节点对象,包含我需要访问/更改的数据
public class Node (string name, int index){ doSomething(); }
我不想含糊其辞,但无法对实际列表进行排序,因为索引是添加节点的历史记录。因此,我想使用一个自动排序 KeyValuePair 对的结构(其中 string 是要排序的名称,int 是在我的节点列表中找到的索引),但我必须能够访问该值.这是我想要做的:
// Add a node to the list, then to the structure
int index = nodes.Count;
nodes.Add(new Node("someName", index));
someStructure.Add("someName", index);
// Give name to structure, which returns int value for use in finding node
node[someStructure.findValueOf("someName"))].doSomething();
这会告诉名为“someName”的节点执行 doSomething();
我确信我遗漏了一些东西。我尝试过使用 SortedSet、SortedList、Dictionary 等。在每种情况下,我都无法检索已排序的对象。如果我找不到它们的位置,自动分类的目的是什么?请帮助我可怜的生活。
最佳答案
您正在寻找一个SortedDictionary
。
根据文档:表示按键排序的键/值对的集合。
虽然,正如一些评论所说,将这 100k 个对象保存在数据库中会更好...
链接:https://msdn.microsoft.com/en-us/library/f7fta44c(v=vs.110).aspx
关于对 key 对进行排序并可访问的 C# 结构?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48715123/