当前位置: 首页 > wzjs >正文

wordpress 整站迁移免费二维码在线制作

wordpress 整站迁移,免费二维码在线制作,自己如何建一个网站,linux wordpress建站教程基础概念 SortedSet 是 C# 中的一个集合类型,位于 System.Collections.Generic 命名空间下。它是一个自动排序的集合,用于存储不重复的元素,并且会根据元素的自然顺序(默认排序)或自定义比较器进行排序,内…

基础概念

SortedSet 是 C# 中的一个集合类型,位于 System.Collections.Generic 命名空间下。它是一个自动排序的集合,用于存储不重复的元素,并且会根据元素的自然顺序(默认排序)或自定义比较器进行排序,内部使用红黑树数据结构来维护元素的有序性。

  • 自动排序:每次添加或删除元素时,SortedSet 都会自动调整以保持元素的排序状态。
  • 不重复元素:SortedSet 不允许重复的元素。如果尝试添加一个已经存在的元素,该操作会被忽略。
  • 高效性:SortedSet 内部使用红黑树(一种自平衡二叉搜索树)实现,因此查找、插入和删除操作的时间复杂度为 O(log n)

主要特性

  • 自动保持元素排序:元素会根据其自然顺序(需实现 IComparable<T> 接口)或自定义比较器(IComparer<T>)排序。
  • 不包含重复元素:尝试添加已有元素时,Add 方法返回 false,集合保持不变。
  • 支持集合操作:提供并集、交集、差集等操作。
  • 支持子集视图:可以通过方法获取某个范围内的元素。
  • 快速访问边界值:提供 Min 和 Max 属性,快速获取最小和最大元素。

创建和初始化

基本创建方式

  • 使用默认比较器(升序)
    • // 使用默认比较器(升序)
      SortedSet<int> numbers = new SortedSet<int>();
  •  使用自定义比较器
    • // 使用自定义比较器
      SortedSet<string> names = new SortedSet<string>(StringComparer.OrdinalIgnoreCase);
  • 从现有集合创建
    • // 从现有集合创建
      int[] array = { 5, 2, 8, 1, 9 };
      SortedSet<int> sortedNumbers = new SortedSet<int>(array);
      // 结果:{1, 2, 5, 8, 9}
  • 使用集合初始化器
    • // 使用集合初始化器
      SortedSet<string> fruits = new SortedSet<string> { "Apple", "Banana", "Cherry" };

自定义比较器

  • 降序排列
    • // 降序排列
      SortedSet<int> descendingNumbers = new SortedSet<int>(Comparer<int>.Create((x, y) => y.CompareTo(x)));
  • 自定义对象排序
    • // 自定义对象排序
      public class Person : IComparable<Person>
      {public string Name { get; set; }public int Age { get; set; }public int CompareTo(Person other){if (other == null) return 1;return this.Age.CompareTo(other.Age); // 按年龄排序}
      }SortedSet<Person> people = new SortedSet<Person>();
  • 使用自定义比较器
    • // 或使用自定义比较器
      SortedSet<Person> peopleByName = new SortedSet<Person>(Comparer<Person>.Create((p1, p2) => string.Compare(p1.Name, p2.Name))
      );

基本操作

添加和删除元素

SortedSet<int> numbers = new SortedSet<int>();
  • 添加元素
    • // 添加元素
      bool added1 = numbers.Add(5);    // true,成功添加
      bool added2 = numbers.Add(3);    // true,成功添加
      bool added3 = numbers.Add(5);    // false,元素已存在Console.WriteLine(string.Join(", ", numbers)); // 输出:3, 5
  • 删除元素
    • // 删除元素
      bool removed = numbers.Remove(3); // true,成功删除
      numbers.Remove(10);  
  • 清空集合
    • // 清空集合
      numbers.Clear();

查询操作

SortedSet<int> numbers = new SortedSet<int> { 1, 3, 5, 7, 9 };
  • 检查元素是否存在
    • // 检查元素是否存在
      bool contains = numbers.Contains(5); // true
  • 获取元素数量
    • // 获取元素数量
      int count = numbers.Count; // 5
  • 检查是否为空
    • // 检查是否为空
      bool isEmpty = numbers.Count == 0; // false
  • 获取最小值和最大值
    • // 获取最小值和最大值
      int min = numbers.Min; // 1
      int max = numbers.Max; // 9

范围查询

  • 使用 GetViewBetween 方法获取指定范围内的元素子集
  • SortedSet<int> numbers = new SortedSet<int> { 1, 3, 5, 7, 9, 11, 13 };// 获取视图(不创建新集合)
    SortedSet<int> subset1 = numbers.GetViewBetween(3, 9);
    // 结果:{3, 5, 7, 9}SortedSet<int> subset2 = numbers.GetViewBetween(4, 10);
    // 结果:{5, 7, 9}// 视图会反映原集合的变化
    numbers.Add(6);
    Console.WriteLine(string.Join(", ", subset2)); // 输出:5, 6, 7, 9

    集合运算

    并集、交集、差集

SortedSet<int> set1 = new SortedSet<int> { 1, 2, 3, 4, 5 };
SortedSet<int> set2 = new SortedSet<int> { 4, 5, 6, 7, 8 };
  • 并集:UnionWith 将另一个集合的元素合并到 SortedSet 中。
    • // 并集(修改 set1)
      set1.UnionWith(set2);
      Console.WriteLine(string.Join(", ", set1)); // 1, 2, 3, 4, 5, 6, 7, 8
  • 交集:IntersectWith 保留与另一个集合的交集。
    • // 重新初始化
      set1 = new SortedSet<int> { 1, 2, 3, 4, 5 };// 交集(修改 set1)
      set1.IntersectWith(set2);
      Console.WriteLine(string.Join(", ", set1)); // 4, 5
  • 差集:ExceptWith 删除与另一个集合相交的元素。
    • // 重新初始化
      set1 = new SortedSet<int> { 1, 2, 3, 4, 5 };// 差集(set1 中有但 set2 中没有的元素)
      set1.ExceptWith(set2);
      Console.WriteLine(string.Join(", ", set1)); // 1, 2, 3
  • 对称差集:SymmetricExceptWith 两个集合中不共同拥有的元素
    • // 对称差集(两个集合中不共同拥有的元素)
      set1 = new SortedSet<int> { 1, 2, 3, 4, 5 };
      set1.SymmetricExceptWith(set2);
      Console.WriteLine(string.Join(", ", set1)); // 1, 2, 3, 6, 7, 8

集合关系判断

SortedSet<int> set1 = new SortedSet<int> { 1, 2, 3 };
SortedSet<int> set2 = new SortedSet<int> { 1, 2, 3, 4, 5 };
SortedSet<int> set3 = new SortedSet<int> { 2, 3 };
SortedSet<int> set4 = new SortedSet<int> { 6, 7 };
  • 子集判断
    • // 子集判断bool isSubset = set1.IsSubsetOf(set2);        // true
      bool isProperSubset = set1.IsProperSubsetOf(set2); // true
      bool isSuperset = set2.IsSupersetOf(set1);    // true
      bool isProperSuperset = set2.IsProperSupersetOf(set1); // true
  • 重叠判断
    • // 重叠判断
      bool overlaps = set1.Overlaps(set3);          // true(有共同元素2,3)
      bool overlaps2 = set1.Overlaps(set4);         // false(无共同元素)
  • 相等判断
    • // 相等判断
      bool areEqual = set1.SetEquals(set3);         // false

遍历和枚举

基本遍历

SortedSet<string> fruits = new SortedSet<string> { "Banana", "Apple", "Cherry" };
  • foreach 遍历(按排序顺序)
    • // foreach 遍历(按排序顺序)
      foreach (string fruit in fruits)
      {Console.WriteLine(fruit); // Apple, Banana, Cherry
      }
  • 使用枚举器
    • // 使用枚举器
      using (var enumerator = fruits.GetEnumerator())
      {while (enumerator.MoveNext()){Console.WriteLine(enumerator.Current);}
      }

反向遍历

SortedSet<int> numbers = new SortedSet<int> { 1, 3, 5, 7, 9 };// 反向遍历
foreach (int number in numbers.Reverse())
{Console.WriteLine(number); // 9, 7, 5, 3, 1
}

SortedSet 的优点和适用场景

优点

  • 自动保持元素排序,无需手动干预。
  • 确保元素唯一性,避免重复。
  • 高效的操作性能(O(log n))。
  • 支持集合操作和子集视图。

适用场景

  • 需要有序且不重复的元素集合,例如排行榜、时间线。
  • 实现优先级队列(尽管 C# 有 PriorityQueue<T>)。
  • 执行集合操作,如并集、交集等。

SortedSet 与其他集合类型的区别

  • 与 HashSet<T> 的区别
    • HashSet<T> 不保持顺序,查找时间为 O(1)。
    • SortedSet<T> 保持顺序,查找时间为 O(log n)。
  • 与 List<T> 的区别
    • List<T> 允许重复元素,不自动排序。
    • SortedSet<T> 不允许重复,自动排序。
  • 与 SortedList<TKey, TValue> 的区别
    • SortedList<TKey, TValue> 是键值对集合,键排序。
    • SortedSet<T> 是元素集合,元素本身排序。

文章转载自:

http://mtOiNoBC.xkqjw.cn
http://qXXLDdzT.xkqjw.cn
http://gCqRkWmg.xkqjw.cn
http://OGccqtiJ.xkqjw.cn
http://Nd91jr2T.xkqjw.cn
http://XYxFABxx.xkqjw.cn
http://RIno6wrg.xkqjw.cn
http://t1ylNugL.xkqjw.cn
http://UYnpUgbk.xkqjw.cn
http://La5Pl5Lh.xkqjw.cn
http://6Yfi9pmM.xkqjw.cn
http://Vg24Q6sY.xkqjw.cn
http://F045cR1f.xkqjw.cn
http://jRZ3vQv9.xkqjw.cn
http://C11Cv6OD.xkqjw.cn
http://bGTRRSRy.xkqjw.cn
http://EGUJWmLm.xkqjw.cn
http://sWcfaXbu.xkqjw.cn
http://eDcB9Omy.xkqjw.cn
http://B4nkfXnr.xkqjw.cn
http://Oh4Gv1Ve.xkqjw.cn
http://XGywPfLH.xkqjw.cn
http://wFrg8iGK.xkqjw.cn
http://335igI4t.xkqjw.cn
http://eA7CyKsz.xkqjw.cn
http://LOguWkDn.xkqjw.cn
http://RZWv6gUs.xkqjw.cn
http://cLyQYGF4.xkqjw.cn
http://7jzP8jio.xkqjw.cn
http://3JsqRaPL.xkqjw.cn
http://www.dtcms.com/wzjs/758311.html

相关文章:

  • c2c模式名词解释南昌seo推广
  • 网站赚钱吗网站建设 服务器主机配置
  • 长沙网站推广¥做下拉去118cr商丘购物网站开发设计
  • 做电影网站用什么虚拟主机营销案例
  • wordpress 媒体库不显示图片黑帽seo
  • 潍坊哪个网站公司做优化好展览展示设计网站
  • html怎么做查询网站网站设计的内容
  • 宠物网站页面设计模板徐州土地交易网
  • 网站个人备案流程工地找活app排行榜
  • 物流公司响应式网站建设服务专业建设
  • 做水印的网站长沙优化科技
  • 我有域名怎么建网站免费矢量图素材网
  • 如何阿里巴巴网站做推广方案做石油期货看什么网站
  • 简述网站开发的基本流程建设银行内部网站源码
  • php购物网站开发设计做一个网站成本是多少
  • 集团高端网站建设重庆城乡建设信息网官网
  • 360度网站模板甘肃省住房和城乡建设局网站
  • 软件网站下载无极在线网
  • 哈尔滨网站建设美丽wordpress防站
  • 信息管理系统网站模板企业网站建设要多久
  • 国外网站可以访问吗WordPress页面加分类文章
  • 台州手机端建站模板简单详细搭建网站教程
  • 网站建设ppt百度文库网络营销的常用策略
  • 手机制作网站的软件体育视频网站建设
  • 宁波网站建设的过程实施网站推广的最终目的
  • 跨境商城网站建设营销推广的方法
  • 长春 做网站多少钱2一3万元小型加工设备
  • 如何对网站做进一步优化wordpress模板制作
  • 东莞市环保局网站如何做登记表衡阳网站页面设计公司
  • 深喉咙企业网站系统广西建筑模板