zoukankan      html  css  js  c++  java
  • 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

  • 相关阅读:
    3D引擎为什么使用三角形绘制曲面
    用SublimeText当Unity Shader的编辑器
    Lua模块的加载与内存释放
    wriesharek同时监听多个端口
    Unity的Input输入
    Unity项目中文字的统一管理
    Unity中的定时器与延时器
    Unity插件扩展中组件常用的几个方法
    u3d不显示阴影的处理方法
    使用ScriptableObject创建.asset文件
  • 原文地址:https://www.cnblogs.com/wolfocme110/p/6323710.html
Copyright © 2011-2022 走看看