• C# HashSet集合类型使用介绍


    1.HashSet集合

    使用HashSet可以提高集合的运算。使用HashSet集合不自带排序方法,如果需要排序的需求可以参考使用List<T>集合配合Sort方法。

    HashSet的优势在与运算快,作为一种存放在内存的数据,可以很快的进行设置和取值的操作。HashSet无法向里面添加重复的数据,避免添加HashSet<T>里面的数据重复。我们使用HashSet常常在集合相加集合相减这些集合与集合之间的操作之中。

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

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

    1.1.我们要求两个集合的并集

    HashSet<int> numbers1;
    HashSet<int> numbers2;
    //分别进行numbers1和numbers2的值初始化或赋值
    numbers1.UnionWith(numbers2);//求两个集合的并集。
    

      

    1.2.求两个集合的交集

    HashSet<int> numbers1;
    HashSet<int> numbers2;
    //分别进行numbers1和numbers2的值初始化或赋值
    numbers1.IntersectWith(numbers2);//求两个集合的交集。
    

      

    1.3.求两个集合的差集

    HashSet<int> numbers1;
    HashSet<int> numbers2;
    //分别进行numbers1和numbers2的值初始化或赋值
    numbers1.ExceptWith(numbers2);//求两个集合的差集。
    

      

    1.4.求两个集合的对称差集

    HashSet<int> numbers1;
    HashSet<int> numbers2;
    //分别进行numbers1和numbers2的值初始化或赋值
    numbers1.SymmetricExceptWith(numbers2);//求两个集合的对称差集。
    

      

    2.HashSet常用扩展方法

    2.1.Add,将项目添加到HashSet之中。

    2.2.Clear,清空HashSet里面的值。

    2.3.Remove,从HashSet中移除值。

    2.4Contains,判断HashSet是否包含指定项目。

    2.4Equals(Object),判断是否相等。

    3.HashSet与Linq操作

    HashSet<T>与LINQ的对等的方法

    UnionWith       ==>  Union

    IntersectWith  ==>  Interset

    ExceptWith     ==>  Except

    不提供排序     ==>  Distinct

    那么我们已经有很多的集合类型如List<T> ,Dictionary<TKey,TValue>或Hashtable等这些集合类型,我们该如何选定我应该采用的哪一个集合类型呢?

    “如果你必须建立新的设定,或则如果应用程序只需要存取提供的任务,那么使用任何的IEnumerable<T>集合都已经足够了。但是,如果应用程序需要存取其他值,或则不建议不需要建立新的集合,这时可使用HashSet<T>.”——摘自MSDN

  • 相关阅读:
    POJ 1321 棋盘问题
    算法导论 4.1 最大子数组问题
    矩阵快速幂
    固定定位
    HTML排版
    CSS笔记2
    HDU 1796 How many integers can you find(容斥原理)
    HDU 2147 kiki's game(博弈经典题)
    HDU 1846 Brave Game(巴什博弈超简单题)
    HDU 4704 Sum(隔板原理+组合数求和公式+费马小定理+快速幂)
  • 原文地址:https://www.cnblogs.com/wolfocme110/p/6323710.html
Copyright © 2020-2023  润新知