代码改变世界

C# HashSet类型

2019-08-08 17:28  石吴玉  阅读(3214)  评论(0编辑  收藏  举报

1.HashSet<T>类,主要被设计用来存储集合,做高性能集运算,例如两个集合求交集、并集、差集等。从名称可以看出,它是基于Hash的,可以简单理解为没有Value的Dictionary。

2.HashSet<T>不能用索引访问,不能存储重复数据,元素T必须正确实现了EqualsGetHashCode

3.HashSet<T>的一些特性如下:

 (1)HashSet<T>中的值不能重复且没有顺序。

 (2)HashSet<T>的容量会按需自动添加。

4.优势:

     (1)HashSet的优势在与运算快,作为一种存放在内存的数据,可以很快的进行设置和取值的操作。

     (2)使用HashSet作为内存存储的快速数据库,这个需要随时跟新HashSet里面的数据,因为在HashSet中一个长时间未被访问的数据,将被系统自动回收掉,那么就会导致失败,那么如何才能保证HashSet里面的值是长存在的而且达到不断的更新里面的值呢?

首先程序过来访问我们HashSet里面有没有需要的数据,如果有我们需要的数据就直接返回给用户,不用调用查询数据库的操作。如果HashSet里面没有我们需要的数据,程序再去查询一次数据库是否有该Query数据,如果有返回给用户同时把查询的结果添加到HashSet里面,这么做可以一定程度的降低查询数据库所带来的不便,但是不能根除,需要进一步提升性能,可以查看前面的缓存策略使用redis来提高网站查询和访问。