zoukankan      html  css  js  c++  java
  • C# HashSet 计算学习笔记

    C# HashSet 学习笔记

    写在前面

    *HashSet是一个相对“冷门”的类型,平时在项目中用得不多,但是在特定的业务中可以大用。*

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

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

    HashSet的一些特性如下:

    1. HashSet中的值不能重复且没有顺序。
    2. HashSet的容量会按需自动添加。

    集合运算

    IntersectWith(IEnumerable other)(交集)

    /*
     * IntersectWith(IEnumerable other)(交集)
     * 这个的意思就是将两个集的数据相交的数据
     * 只有在这两个数据相交的情况下才可以通过判断。
     */
    HashSet<int> set1 = new HashSet<int>() {1,2,3};
    HashSet<int> set2 = new HashSet<int>() { 2, 3, 4 };
    
    set1.IntersectWith(set2);
    
    foreach (var item in set1)
        Console.WriteLine(item);
    
    Console.ReadKey(true);
    

    最后的输出结果为:

    image-20200522102724647

    image-20200522103611562

    这个就是结合中 使用交集的大概运算过程。

    UnionWity(IEnumerable other)(并集)

    /*
     * UnionWith(IEnumberable other)(并集)
     * 并集的意思就是将两个集中的数据合并起来。
     * 但是之合并集中没有的数据,如果当前被合并的元素在集中已经存在,那么就将跳过不合并
     * 
     */
    HashSet<int> set1 = new HashSet<int>() { 1, 2, 3 };
    HashSet<int> set2 = new HashSet<int>() { 2, 3, 4 };
    set1.UnionWith(set2);
    
    foreach (var item in set1)
    {
        Console.WriteLine(item);
    }
    Console.ReadKey();
    

    这里就是我们的并集操作的代码了。

    看看运行效果:

    image-20200522104449177

    ExceptWith(IEnumberable other)(排除)

    /*
     * ExceptWith(IEnumberable other)(排除)
     * 这里对于集的排除操作就是,也就是将我们的set1 和 我们的 set2去做对比
     * 如果在set1中存在的元素set2中也存在那么我们就将排除
     * 如果set1中元素在set2中没有,我们就将该元素保存
     * 
     */
    HashSet<int> set1 = new HashSet<int>() { 1, 2, 3 };
    HashSet<int> set2 = new HashSet<int>() { 2, 3, 4 };
    set1.ExceptWith(set2);
    foreach (var item in set1)
    {
        Console.WriteLine(item);
    }
    Console.ReadKey(true);
    

    这部分其实就是我们的排除操作的代码了。

    看看我们的运行效果:

    image-202005q22105415064

    因为在set1集中有1、2、3这三个元素,然后再set2中有2、3、4这三个元素。因为set1中的2、3和set2中的元素重合和,将会被排除。所以这两个集通过使用排出后只有1这一个元素了。

  • 相关阅读:
    C#基础视频教程4.1 如何编写简单的计算器
    C#基础视频教程3.3 常见控件类型和使用方法
    C#基础视频教程3.2 常见控件类型和使用方法
    C#基础视频教程3.1 常见控件类型和使用方法
    C#基础视频教程2 常见数据类型和属性方法
    C#基础视频教程1 背景知识和安装配置
    为什么我的淘宝排名会突然下降?
    Idea项目如何迁移到Eclipse
    myeclipse部署项目的时候报No projects are available for deployment to this server但是项目明明存在
    idea如何将项目以eclipse保存
  • 原文地址:https://www.cnblogs.com/cao-1/p/12935945.html
Copyright © 2011-2022 走看看