我目前正在从事一个项目,我必须管理大量独特的元素。每个元素都有约 20 个属性,每个元素都有一个公共属性 DateTime。
属性 DateTime 不是唯一的,所以我不能使用通用字典来存储我的数据。
目前我将这些元素放入 ObservableCollection 中,但是从集合中删除元素的性能非常慢,我最终要等待约 20 秒才能从约 25.000 个元素的集合中删除约 7000 个元素。
(搜索操作似乎非常有效,从 300.000 个元素的未排序集合中找到 80 个随机选择的元素只需要大约 30 毫秒)。
每个元素通过简单地返回 DateTime.GetHashCode() 来实现 GetHashCode() 方法。
我认为使用 HashSet 而不是 ObservableCollection 会大大提高我的性能,但它似乎根本没有效果......
使用通用字典更糟糕......
如果元素具有“好的”散列函数(很少有元素具有相同的散列码),HashSet 不是比 ObservableCollection 更强大吗?