C#集合之集(set)的用法

作者:Ruby_Lu 时间:2023-05-18 06:04:53 

包含不重复元素的集合称为&ldquo;集(set)&rdquo;。.NET Framework包含两个集HashSet<T>和SortedSet<T>,它们都实现ISet<T>接口。HashSet<T>集包含不重复元素的无序列表,SortedSet<T>集包含不重复元素的有序列表。
ISet<T>接口提供的方法可以创建合集,交集,或者给出一个是另一个集的超集或子集的信息。

var companyTeams = new HashSet<string>() { "Ferrari", "McLaren", "Mercedes" };
var traditionalTeams = new HashSet<string>() { "Ferrari", "McLaren" };
var privateTeams = new HashSet<string>() { "Red Bull", "Lotus", "Toro Rosso", "Force India", "Sauber" };

if (privateTeams.Add("Williams"))
Console.WriteLine("Williams added");
if (!companyTeams.Add("McLaren"))
Console.WriteLine("McLaren was already in this set");

IsSubsetOf验证traditionalTeams中的每个元素是否都包含在companyTeams中

if (traditionalTeams.IsSubsetOf(companyTeams))
{
Console.WriteLine("traditionalTeams is subset of companyTeams");
}

IsSupersetOf验证traditionalTeams中是否有companyTeams中没有的元素

if (companyTeams.IsSupersetOf(traditionalTeams))
{
Console.WriteLine("companyTeams is a superset of traditionalTeams");
}

Overlaps验证是否有交集

traditionalTeams.Add("Williams");
if (privateTeams.Overlaps(traditionalTeams))
{
Console.WriteLine("At least one team is the same with the traditional " +
"and private teams");
}

调用UnionWith方法把新的 SortedSet<string>变量填充为companyTeams,privateTeams,traditionalTeams的合集

var allTeams = new SortedSet<string>(companyTeams);
allTeams.UnionWith(privateTeams);
allTeams.UnionWith(traditionalTeams);

Console.WriteLine();
Console.WriteLine("all teams");
foreach (var team in allTeams)
{
Console.WriteLine(team);
}

输出(有序的):

Ferrari
Force India
Lotus
McLaren
Mercedes
Red Bull
Sauber
Toro Rosso
Williams

每个元素只列出一次,因为集只包含唯一值。
ExceptWith方法从ExceptWith中删除所有私有元素

allTeams.ExceptWith(privateTeams);
Console.WriteLine();
Console.WriteLine("no private team left");
foreach (var team in allTeams)
{
Console.WriteLine(team);
}

来源:https://www.cnblogs.com/afei-24/p/6835365.html

标签:C#,集合,集,set
0
投稿

猜你喜欢

  • java 中使用匿名类直接new接口详解及实例代码

    2021-08-13 22:26:12
  • c#图像截取实例

    2022-02-21 07:49:58
  • C#使用HttpPost请求调用WebService的方法

    2022-02-24 07:22:16
  • Java 中普通代码块,构造代码块,静态代码块区别及代码示例

    2022-07-03 03:54:21
  • C#中使用UDP通信的示例

    2022-11-19 21:09:07
  • C#实现的上传图片、保存图片、加水印、生成缩略图功能示例

    2022-03-02 03:17:29
  • Android studio 3.0安装配置方法图文教程

    2021-05-26 14:48:42
  • java高并发InterruptedException异常引发思考

    2022-09-09 20:15:34
  • Java并发编程中的生产者与消费者模型简述

    2023-02-16 20:33:18
  • Java中File类方法详解以及实践

    2021-09-13 05:58:16
  • 解决Android从相册中获取图片出错图片却无法裁剪问题的方法

    2023-09-14 23:41:15
  • SpringBoot与Angular2的集成示例

    2021-09-02 22:24:55
  • Android中系统自带锁WalkLock与KeyguardLock用法实例详解

    2023-11-26 01:50:49
  • Java中的synchronized 优化方法之锁膨胀机制

    2023-10-02 03:44:15
  • Spring jackson原理及基本使用方法详解

    2021-10-03 08:28:18
  • mybatis多个区间处理方式(双foreach循环)

    2023-11-26 09:01:42
  • 获取Android系统唯一识别码的方法

    2022-08-09 22:20:45
  • Java简单实现SpringMVC+MyBatis分页插件

    2023-09-09 23:08:45
  • Java ByteBuffer网络编程用法实例解析

    2022-09-17 20:16:22
  • Java C++题解leetcode904水果成篮

    2023-12-08 21:06:09
  • asp之家 软件编程 m.aspxhome.com