我想加载一个包含大约100,000个整数的文件。在加载过程中,我想删除重复项并将其余部分插入数据库。
C#中理想的数据结构是什么?
B树是否适合我的情况,如果是这样,C#中是否有B树实现?
(我是C#的新手。)
答案 0 :(得分:4)
我只是使用HashSet<T>
。它将忽略重复。
请注意,枚举HashSet<T>
会以未指定的顺序返回元素。
如果您需要排序,请查看SortedDictionary<TKey, TValue>
。它是基于树的,可能会更慢。
答案 1 :(得分:0)
答案 2 :(得分:0)
C#中理想的数据结构是什么?
应主要根据问题选择适当的数据结构。只有这样,编程语言,范例或类框架才会影响该选择。
话虽这么说,HashSet<int>
可以很好地完成这项任务:
至少在.NET 4中,这是ISet<T>
接口的实现,它为数学sets建模。与multisets(也称为 bags )不同,它们仅包含不同的成员。因此,如果您将相同的值两次添加到同一HashSet<int>
,则只会包含一次。
HashSet<T>
即使使用大型集也应该具有良好的性能,因为它是根据哈希表实现的(顾名思义)。
如果您要将值插入关系数据库(其中记录也是无序的),那么集合无序的事实应该无关紧要。
B树是否适合我的情况,如果是这样,C#中是否有B树实现?
(请注意,类库不属于C#,语言,而是.NET,平台!)
我不知道你为什么特意提到B-tree,但不,.NET BCL(基类库)不包含B树的实现。
如果您需要使用persistent data structures,那么基于树的解决方案可能确实比HashSet<T>
更适合,这是可变的。