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

C#编程(五十五)----------HashSet和SortedSet

饱含不重复元素的集合称为”集(set)”. .NET4包含两个集(HashSet<T>SortedSet<T>),他们都实现ISet<T>接口.HashSet<T>即包含不重复元素的无序列表,SortedSet<T>集包含不重复元素的有序列表.

ISet<T>接口提供的方法可以创建合集,交集,或者给出一个集合时另一个集的超集或子集的信息.

案例:

            //使用HashSet:重复的元素自动被移除,但是不排序

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

            foreach (var item in set)

            {

                Console.WriteLine(item);

            }

            Console.ReadKey();

 

同样的代码,HashSet换成SortedSet:

            //使用SortedSet:重复的元素自动被移除,还进行了排序

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

            foreach (var item in set)

            {

                Console.WriteLine(item);

            }

            Console.ReadKey();

 

总结:

1.HashSetSortedSet主要的作用是用来进行两个集合求交集,并集,差集等运算. 集合中包含一组不重复出现且无特性顺序的元素.前者不会自动排序,后者会加入元素后,自动排序

2.两者都无法从特定位置访问其中某个元素.

3.可以使用其查找功能:

Set.Contains(“value”) //返回truefalse

4.对集合的操作:

a . SymmetricExceptWith:仅包含该对象或指定集合中存在的元素(但不可同时包含两者中的元素).去除交集,剩下两个集合元素.

b . UnionWith:包含该对象本身和制定集合中存在的所有元素. 并集

c . ExceptWith从当前HashSet<T>对象中移除指定集合中的所有元素 . 差集

d . IntersectWith:仅包含该对象和指定集合中存在的元素. 交集

 

5.SortedSet对象,可以调用GetViewBetween,Max,Min方法

6.除了SortedSet,System.Collections.Generic命名空间下,还提供了SortedDictionarySortedList两个类.

 

测试HashSet内置的一些方法:

using System;

using System.Collections.Generic;

using System.Linq;

using System.Text;

using System.Threading.Tasks;

 

namespace

{

    class Program

    {

        static void Main(string[] args)

        {

            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);   //setAsetB 各自特有、对方没有的元素列出来

            Show("setA after Symmetric difference with SetB: ", setA);

 

            setA.UnionWith(setB);       //setAsetB 的全部元素列出来 (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();

        }

 

    }

}

 

测试SortedSet的方法:

using System;

using System.Collections.Generic;

using System.Linq;//此为Max(),Min()方法的必要调用

using System.Text;

using System.Threading.Tasks;

 

namespace

{

    class Program

    {

        static void Main(string[] args)

        {

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

 

            foreach (int element in set)

                Console.WriteLine(string.Format(" {0}", element));

 

           

            Console.WriteLine("Max: " + set.Max() );

            Console.WriteLine("Min: " + set.Min() );

 

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

 

            //只取值为 2 ~ 5 之间的元素

            var subSet = set.GetViewBetween(2, 5);

            foreach (int i in subSet)

            {

                Console.Write(i + " ");

            }

            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();

        }

 

    }

}

转载于:https://www.cnblogs.com/FinleyJiang/p/7602715.html

相关文章:

  • 云非万能!云计算不能解决的三大问题
  • maven打包加速(转) (开启多线程,之前发现只占用一核CPU100%,其他CPU闲置的情况)...
  • Android Studio 入门级教程
  • lua中实现倒计时
  • 条款7:为多态基类声明virtual析构函数
  • Linux下rootkit后门检测工具chkrootkit
  • 人们应将公共云与私有云的辩论抛之脑后
  • 毕业两年的程序猿经验小结
  • 数据库 之 SQL语句构成和分类
  • ImageSharp .NET Core跨平台图形处理库
  • 触摸屏手指滑动方向检测
  • jQuery EasyUI快速入门实战教程(一)-入门
  • oracle业务硬盘出现故障无法访问,提示需要重新格式化后解决方法
  • 阿里云,为寄递业务探索创新升级
  • SkinSB皮肤滚动条库的一个帮助头文件
  • __proto__ 和 prototype的关系
  • 【159天】尚学堂高琪Java300集视频精华笔记(128)
  • Java 最常见的 200+ 面试题:面试必备
  • JS学习笔记——闭包
  • k8s如何管理Pod
  • LeetCode541. Reverse String II -- 按步长反转字符串
  • MySQL-事务管理(基础)
  • ng6--错误信息小结(持续更新)
  • passportjs 源码分析
  • Promise面试题2实现异步串行执行
  • React 快速上手 - 06 容器组件、展示组件、操作组件
  • redis学习笔记(三):列表、集合、有序集合
  • SpiderData 2019年2月16日 DApp数据排行榜
  • vue中实现单选
  • webpack4 一点通
  • 动态魔术使用DBMS_SQL
  • 基于游标的分页接口实现
  • 近期前端发展计划
  • 排序(1):冒泡排序
  • 首页查询功能的一次实现过程
  • 在Docker Swarm上部署Apache Storm:第1部分
  • Java总结 - String - 这篇请使劲喷我
  • 微龛半导体获数千万Pre-A轮融资,投资方为国中创投 ...
  • ###51单片机学习(2)-----如何通过C语言运用延时函数设计LED流水灯
  • (20)目标检测算法之YOLOv5计算预选框、详解anchor计算
  • (3)Dubbo启动时qos-server can not bind localhost22222错误解决
  • (4) openssl rsa/pkey(查看私钥、从私钥中提取公钥、查看公钥)
  • (function(){})()的分步解析
  • (react踩过的坑)Antd Select(设置了labelInValue)在FormItem中initialValue的问题
  • (SpringBoot)第七章:SpringBoot日志文件
  • (vue)页面文件上传获取:action地址
  • (全注解开发)学习Spring-MVC的第三天
  • (五)Python 垃圾回收机制
  • (转)负载均衡,回话保持,cookie
  • ***原理与防范
  • *p++,*(p++),*++p,(*p)++区别?
  • .NET 4.0网络开发入门之旅-- 我在“网” 中央(下)
  • .NET 8.0 发布到 IIS
  • .NET 设计模式初探
  • .net安装_还在用第三方安装.NET?Win10自带.NET3.5安装