我有10万串每一个固定排序的索引值是这样的:字典,数组或列表的索引快速搜索和值
Index String Value
0 XXXXXXXXXXXXXXXXXXXXX
1 XXXXXXXXXX
2 (empty string)
3 XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
4 XXXXX
5 XXXXXXXXX
6 XXXXXXXXXXXXXXX
7 (empty string)
8 XX
9 XXXXXXXXXX
10 XXXXXXXXXXXXXXXXXXXXXXXXXX
... ...
99999 XXXXXXXXXXXXXXXXXXX
我的数据结构必须持有完全相同100000有序条目和一些(或许多)的字符串值可能是空的,至少在最初时是如此。每个索引值都是唯一的(顺序整数),除空字符串外,每个字符串值也是唯一的。为了在我的UI中进行显示,我通常只填充我的数据结构,将列表框绑定到它(使用指定的DisplayMember和ValueMember)。但在这种情况下,我只想显示而不是空的字符串。所以想必,我需要通过我的数据结构进行迭代,并添加适用的项目列表框在一个类似的方式:
foreach (item in MyDataStructure)
{
if (item.StringValue != string.Empty)
{
listBox1.Items.Add(item);
}
}
对我来说,能够保持每个字符串之间的关系是非常重要的及其指数值。正如您所料,我的用户需要添加/编辑/删除字符串。理论上,所有三个操作都归结为同一个事物:更新特定索引处的字符串值。要添加一个新的字符串,我需要首先遍历我的数据结构,并确保在某个地方有一个空字符串,以便我可以用新字符串替换它。如果不存在空字符串,我的用户将需要“编辑”现有的字符串或首先“删除”另一个字符串,因为我们正在处理固定数量的总字符串(100k)。从编程的角度来看,“删除”一个字符串也仅仅是在我的数据结构中的适当索引处用空/空字符串替换它的问题。
是最好的,我可以预见,我需要的数据结构,可以很容易做到以下几点:
- 为每个非空字符串添加索引和字符串值的列表框和使用作为ValueMember的索引和作为DisplayMember的字符串。
- 快速搜索的数据结构的特定索引和检索它的字符串值
- 快速搜索的数据结构的字符串,看它是否已经存在
考虑到这些事情,任何人都可以推荐特定的数据结构可以帮助完成任务?我最初想到一个带有键/值对的字典来保存每个索引/字符串。然后有人建议使用一个数组,因为总大小是固定的,数组索引本身也可以作为每个字符串值的索引值。
索引和字符串值之间的关系是什么?另外,为什么总共需要有10万个字符串? –
叫我疯了,但你为什么不使用数据库?(散列表是你唯一可行的选择) – Nahum
正如我的答案旁注 - 为什么你总是需要有100'000?你不能从0开始,然后添加,只需设置最大值100'000,然后添加/删除/编辑列表。 – LukeHennerley