HashSet 概述
-
HashSet<T>
存储的元素是无序的 -
HashSet<T>
存储的元素是不可重复的 -
HashSet<T>
支持泛型,可以指定存储的元素的类型 -
HashSet<T>
不支持索引,不可以通过索引获取或修改元素 -
HashSet<T>
不是线程安全的,在多线程环境中需要谨慎使用
一、HashSet 集合操作
1、HashSet 的并集操作
- 并集是指两个集合中所有的元素(不重复)组成的集合
HashSet<int> set1 = new HashSet<int> { 1, 2, 3 };
HashSet<int> set2 = new HashSet<int> { 3, 4, 5 };
HashSet<int> newSet = new HashSet<int>(set1);
newSet.UnionWith(set2);
foreach (int item in newSet)
{
Console.WriteLine(item);
}
# 输出结果
1
2
3
4
5
2、HashSet 的交集操作
- 交集是指两个集合中共有的元素组成的集合
HashSet<int> set1 = new HashSet<int> { 1, 2, 3 };
HashSet<int> set2 = new HashSet<int> { 3, 4, 5 };
HashSet<int> newSet = new HashSet<int>(set1);
newSet.IntersectWith(set2);
foreach (int item in newSet)
{
Console.WriteLine(item);
}
# 输出结果
3
二、HashSet 存储对象的特性
- HashSet 存储对象或对对象进行检测时,对于没有重写 Equals 和 GetHashCode 方法的对象可能不太方便
HashSet<Person> persons = new HashSet<Person>();
persons.Add(new Person("tom", 20));
persons.Add(new Person("jack", 25));
persons.Add(new Person("jack", 25));
Console.WriteLine(persons.Count);
# 输出结果
3
False
False
- HashSet 存储对象时或对对象进行检测时,对于重写 Equals 和 GetHashCode 方法的对象比较方便
HashSet<Staff> staffs = new HashSet<Staff>();
staffs.Add(new Staff("tom", 20));
staffs.Add(new Staff("jack", 25));
staffs.Add(new Staff("jack", 25));
Console.WriteLine(staffs.Count);
# 输出结果
2
True
False
三、HashSet 与数组的转换
1、HashSet 转数组
HashSet<int> hashSet = new HashSet<int> { 1, 2, 3, 4, 5 };
int[] array = hashSet.ToArray();
foreach (int item in array)
{
Console.WriteLine(item);
}
# 输出结果
1
2
3
4
5
2、数组转 HashSet
int[] array = { 1, 2, 3, 4, 5 };
HashSet<int> hashSet = new HashSet<int>(array);
foreach (int item in hashSet)
{
Console.WriteLine(item);
}
# 输出结果
1
2
3
4
5
四、HashSet 存储元素特性
- HashSet 存储的元素是不可重复的
HashSet<int> nums = new HashSet<int>();
nums.Add(1);
nums.Add(2);
nums.Add(3);
nums.Add(1);
foreach (int num in nums)
{
Console.WriteLine(num);
}
# 输出结果
1
2
3
- 利用 HashSet 存储的元素是不可重复的这一特点,可以对一组数据进行去重
int[] array = { 1, 1, 2, 2, 3, 3 };
HashSet<int> hashSet = new HashSet<int>(array);
foreach (int item in hashSet)
{
Console.WriteLine(item);
}
# 输出结果
1
2
3
标签:存储,HashSet,int,特性,item,Add,WriteLine,new
From: https://blog.csdn.net/weixin_52173250/article/details/143644176