首页 > 编程语言 >C#数据结构 HashSet 用法

C#数据结构 HashSet 用法

时间:2024-02-23 23:45:13浏览次数:38  
标签:string HashSet C# companyTeams company str 数据结构 RemoveWhere

所属命名空间

.NET 3.5在 System.Collections.Generic 命名空间中包含一个新的集合类:HashSet 这个集合类包含不重复项的无序列表称作HashSet。(类似C++的unordered_set?) 这个集合基于散列hash值,插入元素的操作非常快,不需要像List类那样重排集合。

操作函数表

Add重载:

Hashset还提供了另一个Add()方法重载。它返回一个布尔值,说明是否添加了元素。如果该元素已经在集中,就不添加它,并返回false。  

RemoveWhere() 满足条件删除

RemoveWhere()方法需要一个Predicate委托作为参数。删除满足谓词条件的所有元素 Predicate 可以委托给一个函数或者一个拉姆达表达式:

委托给拉姆达表达式:

companyTeams.RemoveWhere(company => { if (company.Length > 5) { return true; } else { return false; } });

委托给一个函数:

companyTeams.RemoveWhere(CheckLength); public bool CheckLength(string company) { return company.Length > 5 ? true : false; }  

CopyTo() 把集合中的元素复制到一个数组中

string[] strArray = new string[companyTeams.Count];
companyTeams.CopyTo(strArray);   //将hashset复制到数组中
foreach (string str in strArray)
{
    Console.WriteLine(str);
}
 

ExceptWith() 删除集合中所有元素

参数是一个hashset
companyTeams.ExceptWith(privateTeams);
foreach (var str in companyTeams)
{
    Console.WriteLine(str);
}
   

HashSet类提供的方法可以创建合集和交集

 

标签:string,HashSet,C#,companyTeams,company,str,数据结构,RemoveWhere
From: https://www.cnblogs.com/jk-2048/p/18030587

相关文章

  • C#预处理指令 #XXX
    详见:https://learn.microsoft.com/zh-CN/dotnet/csharp/language-reference/preprocessor-directives预处理指令简介C#中可使用这些指令来帮助条件编译。不同于C和C++指令,不能使用这些指令来创建宏。预处理器指令必须是一行中唯一的说明。 分类详情1.可为空上下文#n......
  • 刘铁猛C#学习笔记18 重写与多态
    重写override子类中重新定义父类中已有的方法重写语法需要在要重写的父类方法添加一个virtual修饰符(虚方法)在子类中的同名方法添加一个override修饰符 子类中添加新的成员,是继承中对父类的横向扩展重写不添加新成员,而是增加已有成员的新版本,可以看着对父类的纵向扩展......
  • 刘铁猛C#学习笔记19 抽象类、接口与SOLID五大原则
    接口与抽象类是所有高阶面向对象的起点,是学习设计模式的前置条件必须有实践基础之后,才能真正掌握算法、设计模式 设计模式的基础solid五大设计原则(待续)1.单一职责原则singleresponsibilityprinciple2.开放-关闭原则Open-closeprinciple,简称为开闭原则“封装确定的,......
  • 刘铁猛C#学习笔记21 反射与依赖注入
    反射对于一个现有对象,能够在不使用new操作符、不知道其具体静态类型的情况下,创建出一个同类型的对象,还能访问这个复制品对象拥有的各个成员。相当于进一步的解耦,可以不使用new操作符,就没有类型的依赖关系这样的耦合关系甚至可以弱到忽略不计反射在.NET和JAVA中非常重要 ......
  • C#数据结构 字典Dictionary
    简介字典是C#开发中经常使用的一种键值对容器,类似C++的map,可使用foreach或迭代器遍历不能装多个相同key,底层实现是哈希函数具体用法1.创建Dictionary<key,value>//Key和Value可以是任意类型Dictionary<int,string>_testDic=newDictionary<int,string>();2.添加......
  • 刘铁猛C#学习笔记13 委托1
    “幻想:如果能有一种能把方法当参数的方法就好了”一、什么是委托委托源自C、C++中的函数指针 1.C语言中的函数指针(1)函数的直接调用先准备好一个加法函数,一个减法函数可以通过函数名调用这两个函数,这种调用方法称作直接调用 (2)函数指针的声明、间接调用先按下......
  • C++ 令人无语/好用的语法合集
    此贴用来总结一些傻逼C++语法,或者坑了我很久的写法。1、(坑)重载>,<,==时,千万不要使用pair为基的typedef!!!!!!pii的max不受你的重载影响,它自己有自己的max,然后typedef和define是相同的,基本可以看做直接替换,不会对作用域/命名做区分。2、(坑)lower_bound(..,..,{x......
  • containerd环境搭建指南
    目录一.container概述1.什么是containerd2.为什么要学习containerd二.基于yum方式安装containerd1.获取软件源2.查看yum源中containerd软件版本3.安装containerd的4.查看containerd的版本信息5.设置containerd开机自启动6.查看containerd的客户端和服务端的版本信息三.基于二进制......
  • SciTech-EECS-PCB电路板设计-使用KiCad进行PCB设计的基本流程
    使用KiCad进行PCB设计的基本流程,2024-02-2314:04KiCad是一款强大的开源PCB设计软件,其设计的大体流程包括:原理图设计及导出网表文件,PCB布局和布线,导出Gerber文件及制板;以下是使用KiCad进行PCB设计的基本步骤:0.安装KiCad:首先,你需要安装KiCad软件。KiCad官方网站下载......
  • 刘铁猛C#学习笔记10 字段、属性
    这四种东西都是用来表达数据的一、字段(成员变量)曾用名:成员变量是为一个对象或类型存储数据的变量,区别于方法体中的局部变量多个字段组合起来可以表示对象当前的状态起源:C语言中结构体的成员变量一个对象占用的内存空间会被分配给各个字段1.实例字段和静态字段可以分为......