C# HashSet<T> 简单使用

一个简单的HashSet<T> 的例子,介绍其简单的方法,深入学习可参考微软:https://msdn.microsoft.com/en-us/library/bb359438(v=vs.110).aspx

static void Main(string[] args)
        {
            //定义两个哈希集合以及其中一个集合的子集
            HashSet<int> hashSet1 = new HashSet<int>() { 1, 2, 3, 4, 5 };
            HashSet<int> hashSet2 = new HashSet<int>() { 6, 7, 8, 9, 10 };
            HashSet<int> hashSet1Sub = new HashSet<int>() { 4, 5 };
            HashSet<int> hashSetAll = new HashSet<int>();

            string message = String.Empty;
            bool result = false;

            #region Hash集合元素唯一性体现
            result = hashSet1.Add(1);    //集合1中添加重复元素
            if (result)
            {
                message = "Hash集合已存在该元素";
            }
            else
            {
                message = "元素添加成功";
            }
            Console.WriteLine(message);
            #endregion

            #region Hash表子集、交集判断
            result = hashSet1.IsSubsetOf(hashSet2);
            if (result)
            {
                message = "Hash集合2是集合1的子集";
            }
            else
            {
                message = "Hash集合2不是集合1的自己";
            }
            Console.WriteLine(message);

            result = hashSet1.Overlaps(hashSet2);
            if (result)
            {
                message = "Hash集合1和Hash集合2存在交集";
            }
            else
            {
                message = "Hash集合1和hash集合2不存在交集";
            }

            result = hashSet1.IsSupersetOf(hashSet2);
            if (result)
            {
                message = "集合1完全包含集合2";
            }
            else
            {
                message = "集合1不完全包含集合2";
            }
            #endregion

            #region 集合的初始化
            hashSetAll = new HashSet<int>(hashSet1);
            hashSetAll.UnionWith(hashSet2);
            hashSetAll.UnionWith(hashSet1Sub);

            message = "输出所有集合的元素";
            Console.WriteLine(message);
            foreach (int item in hashSetAll)
            {
                Console.WriteLine(item);
            }
            #endregion

            #region 排除元素
            hashSetAll.ExceptWith(hashSet2);
            message = "排除了集合2并输出";
            Console.WriteLine(message);
            foreach (var item in hashSetAll)
            {
                Console.WriteLine(item);
            }
            #endregion

            Console.ReadKey();
        }
时间: 2024-10-09 23:37:12

C# HashSet<T> 简单使用的相关文章

java基础----&gt;hashSet的简单分析(一)

对于HashSet而言,它是基于HashMap实现的,底层采用HashMap来保存元素的.今天我们就简单的分析一下它的实现. HashSet的简单分析 一.hashSet的成员变量组成 public class HashSet<E> extends AbstractSet<E> implements Set<E>, Cloneable, java.io.Serializable private transient HashMap<E,Object> map;

HashSet的简单实现

HashSet的巧妙实现:就是建立一个“键值对”,“键”就是我们要存入的对象,“值”则是一个常量.这样可以确保, 我们所需要的存储的信息之是“键”.而“键”在Map中是不能重复的,这就保证了我们存入Set中的所有的元素都不重复.而判断是否添加元素成功,则是通 过判断我们向Map中存入的“键值对”是否已经存在,如果存在的话,那么返回值肯定是常量:PRESENT ,表示添加失败.如果不存在,返回值就为null 表示添加成功.

JDK源码分析(五)——HashSet

目录 HashSet概述 内部字段及构造方法 存储元素 删除元素 包含元素 总结 HashSet概述 ??从前面开始,已经分析过集合中的List和Map,今天来介绍另一种集合元素:Set.这是JDK对HashSet的介绍: This class implements the Set interface, backed by a hash table (actually a HashMap instance). It makes no guarantees as to the iteration

Java 中最常见的 5 个错误

在编程时,开发者经常会遭遇各式各样莫名错误.近日,Sushil Das在 Geek On Java上列举了 Java 开发中常见的 5 个错误,与君共「免」. 1.Null 的过度使用 避免过度使用 null 值是一个最佳实践.例如,更好的做法是让方法返回空的 array 或者 collection 而不是 null 值,因为这样可以防止程序抛出 NullPointerException.下面代码片段会从另一个方法获得一个集合: List<String> accountIds = person

java集合类中的迭代器模式

不说模式的问题,看一个<<设计模式之禅>>里面的例子. 老板要看到公司了各个项目的情况.(我知道我这个概述很让人头大,看代码吧) 示例程序 v1 package Iterator; /** * @author cbf4Life [email protected] * 定义一个接口,所有的项目都是一个接口 */ public interface IProject { //从老板这里看到的就是项目信息 public String getProjectInfo(); } package

java最常见的5个错误

1. Null 的过度使用 避免过度使用 null 值是一个最佳实践.例如,更好的做法是让方法返回空的 array 或者 collection 而不是 null 值,因为这样可以防止程序抛出 NullPointerException.下面代码片段会从另一个方法获得一个集合: </> List<String> accountIds = person.getAccountIds(); for (String accountId : accountIds) { processAccoun

不惑JAVA之JAVA基础 - HashMap

HashMap应该是平时应用开发中或是框架设计中最为常用高效的容器.在介绍HashMap之前,先介绍两个常见的区别.后期会专门介绍CurrentHashMap. hashmap 和 hashtable 区别 HashMap和HashTable有什么区别,一个比较简单的回答是: HashMap是非线程安全的,HashTable是线程安全的. HashMap的键和值都允许有null值存在,而HashTable则不行. 因为线程安全的问题,HashMap效率比HashTable的要高. hashmap

java map的实现原理

HashMap 的实现原理 HashMap 概述 HashMap 是基于哈希表的 Map 接口的非同步实现.此实现提供所有可选的映射操作,并允许使用 null 值和 null 键.此类不保证映射的顺序,特别是它不保证该顺序恒久不变. 此实现假定哈希函数将元素适当地分布在各桶之间,可为基本操作(get 和 put)提供稳定的性能.迭代 collection 视图所需的时间与 HashMap 实例的"容量"(桶的数量)及其大小(键-值映射关系数)成比例.所以,如果迭代性能很重要,则不要将初

夯实Java基础(十九)——集合

1.前言 集合在Java中的地位想必大家都知道,不用多BB了.无论是在我们现在的学习中还是在今后的工作中,集合这样一个大家族都无处不在,无处不用.在前面讲到的数组也是一个小的容器,但是数组不是面向对象对象的,它存在明显的缺陷,而集合恰好弥补了数组带来的缺陷.集合比数组更加灵活.更加实用.而且不同的集合框架可用于不同的场景. 我们简单来比较一下数组和集合区别: 1.数组能存放基本数据类型和对象,而集合类中只能存放对象. 2.数组容量固定无法动态改变,集合类容量可以动态改变. 3.数组无法判断其中实