尧图网站建设 尧图网络
  • 首页
  • 关于我们
  • 服务项目
  • 案例展示
  • 建站流程
  • 资讯中心
  • 联系我们
首页/资讯中心/详情

NET 4 新增的 SortedSet 类

NET 4 新增的 SortedSet 类
📅 发布时间:2026/7/5 23:20:51


以下我们来看 .NET 里 HashSet 的一些示例:


示例一 - 测试查找的功能:

var set = new HashSet<char>("我爱编程");

Response.Write(set.Contains('我')); //True
Response.Write(set.Contains('你')); //False

上述示例中,我们能够将字符串,甚至中文字,传入 HashSet<char> 的构造函数,是因为 string 实现了 IEnumerable<char> 接口,而 HastSet 类也实现了 IEnumerable<T>。


示例二 - 测试 HashSet 内置的一些好用方法:

  1. SymmetricExceptWith: 仅包含该对象或指定集合中存在的元素(但不可同时包含两者中的元素)。
  2. UnionWith: 包含该对象本身和指定集合中存在的所有元素。
  3. ExceptWith: 从当前 HashSet<T> 对象中移除指定集合中的所有元素。
  4. IntersectWith: 仅包含该对象和指定集合中存在的元素。

using System;
using System.Collections.Generic;

class HashSetDemo
{
static void Main()
{
HashSet<char> setA = new HashSet<char>();
HashSet<char> setB = new HashSet<char>();

setA.Add('A');
setA.Add('B');
setA.Add('C');

setB.Add('C');
setB.Add('D');
setB.Add('E');

Show("Initial content of setA: ", setA);
Show("Initial content of setB: ", setB);

setA.SymmetricExceptWith(setB); //把 setA、setB 各自特有、对方没有的元素列出来
Show("setA after Symmetric difference with SetB: ", setA);

setA.UnionWith(setB); //把 setA、setB 的全部元素列出来 (union 并集)
Show("setA after union with setB: ", setA);

setA.ExceptWith(setB); //把 setA 中,所拥有的 setB 元素移除
Show("setA after subtracting setB: ", setA);

Console.WriteLine();
Console.Read();
}

static void Show(string msg, HashSet<char> set)
{
Console.Write(msg);
foreach (char ch in set)
Console.Write(ch + " ");
Console.WriteLine();
}
}

执行结果:


图 3 测试 SymmetricExceptWith、UnionWith、ExceptWith 方法

setA.IntersectWith(setB); //把 setA 中,所拥有的 setB 元素列出
Show("setA after intersect with setB: ", setA);

执行结果:


图 4 测试 IntersectWith 方法


由于 HastSet<T> 实现了 IEnumerable<T> 接口,因此我们可把其他任何 set 当作参数,传入其他 set 类的运算方法里。


此外,LINQ 也有类似上述示例的 Intersect、Except、Union、Distinct 的 set 运算功能,有兴趣比较两者特性的网友,可参考 msdn 或网络上的文章 [5]。主要的差别在于,LINQ set 运算始终返回新的 IEnumerable<T> 集合,而 HashSet<T> 是修改当前的集合,且 HashSet 提供了比较多的 set 相关算符。

------------------------------------------------------------------------


到了 .NET 4 才新建的 SortedSet 类,除了有前述 HashSet 类所拥有的 SymmetricExceptWith、UnionWith、ExceptWith、IntersectWith 等好用的方法外,还有「GetViewBetween (制定范围)」、「Max (取最大值)」、「Min (取最小值)」等新增的好用方法。


以下我们来看 SortedSet 这三个方法的示例:


示例三 - 测试 GetViewBetween、Max、Min 方法:

using System;
using System.Collections.Generic;
using System.Linq; //此为 Max()、Min() 方法的必要引用

var set = new SortedSet<int>() { 5, 9, 2, 1, 2, 2, 3, 7, 4, 9, 9 };

foreach (int element in set)
Response.Write(string.Format(" {0}", element));

Response.Write("<p>");
Response.Write("Max: " + set.Max() + "<br>");
Response.Write("Min: " + set.Min() + "<br>");

Response.Write("<br>取 2 ~ 5 之间的值: <br>");

//只取值为 2 ~ 5 之间的元素
var subSet = set.GetViewBetween(2, 5);
foreach (int i in subSet)
{
Response.Write(i + ",");
}

执行结果:


图 5 测试 SortedSet 类专属的 GetViewBetween、Max、Min 方法

相关新闻

  • YOLOv11目标检测算法解析与实战指南
  • Qwen3.5-Plus vs GPT-5.2硬刚实测:开源大模型性能验证方法论
  • 蒙特卡洛 vs 时序差分:GridWorld 迷宫 10 万步训练,收敛速度与方差实测对比

最新新闻

  • SQL Server 2022 GROUP BY CUBE 实战:3维度销售数据交叉分析(含完整脚本)
  • Windows Hello 兼容性深度解析:3 类摄像头硬件要求与驱动避坑指南
  • UE4/UE5 资产迁移避坑指南:3种场景避免生成冗余重定向器
  • FactoryTest 可以访问 /dev/ttyUSB0 /dev/ttyS1 这两个节点,还可以读写?为什么呢?
  • ART 虚拟机 DexClassLoader 脱壳实战:3个关键函数 Hook 与内存 Dump 实现
  • 给 Agent 加一个 Approval Gate

日新闻

  • AI智能体安全防护框架AgentGuard:从原理到实战部署指南
  • KMX63与PIC18F26K40硬件组合及低功耗设计实践
  • 基于YOLO13改进的门体检测模型:C3k2模块与PoolingFormer技术解析

周新闻

  • 基于YOLOv12的番茄成熟度智能检测系统开发
  • 终极RimWorld模组管理指南:用RimSort告别模组冲突烦恼
  • AI Agent框架开发:从理论到实践的完整指南

月新闻

  • 2026年6月公司网站搭建最新热门渠道测评:四大低成本/零代码平台对比+避坑
  • 【Linux】Linux arm 编译QT程序,出现expected “}“报错
  • 【MATLAB例程】四基站二维AOA定位与距离辅助增强对比仿真。基于角度观测和测距修正的固定目标平面定位精度分析

关于尧图

  • 公司简介
  • 团队介绍
  • 企业文化
  • 荣誉资质

服务项目

  • 定制开发
  • 电商建站
  • UI 设计
  • 运维服务

快速链接

  • 案例展示
  • 建站流程
  • 常见问题
  • 资讯中心

联系方式

  • 📍北京市朝阳区互联网产业园 A 座 10 层
  • 📞400-888-8888
  • ✉️contact@rkmt.cn
  • 🕐周一至周日 9:00-21:00

© 2024 北京尧图网络科技有限公司 版权所有 | 京 ICP 备 XXXXXXXX 号