C# 中的 HashSet 与列表
本教程将讨论 C# 中的 HashSet<T>
和 List<T>
之间的区别和相似之处。
C# 中的 HashSet<T>
集合的数学定义是不同对象的无序集合。C# 中的 HashSet
数据结构也遵循相同的原则。
HashSet
是不遵循任何特定顺序的非重复对象的集合。当我们不希望数据中有重复值时,通常使用 HashSet
。
它是包含在 System.Collection.Generic
命名空间中的通用集合。
HashSet
的一个优点是我们可以应用所有集合操作,例如并集、交集和集差。使用 HashSet
的一个显着缺点是我们无法对其进行排序,因为它不遵循任何特定的顺序。
以下代码片段向我们展示了如何在 C# 中使用哈希集。
HashSet<int> weirdNumbers = new HashSet<int>();
weirdNumbers.Add(10);
weirdNumbers.Add(13);
weirdNumbers.Add(17);
weirdNumbers.Add(78);
weirdNumbers.Add(13);
Console.WriteLine("HashSet before removal");
foreach (int val in weirdNumbers) {
Console.WriteLine(val);
}
weirdNumbers.Remove(13);
Console.WriteLine("HashSet after removal");
foreach (int val in weirdNumbers) {
Console.WriteLine(val);
}
输出:
HashSet before removal
10
13
17
78
HashSet after removal
10
17
78
在上面的代码示例中,我们展示了如何创建一个通用哈希集,将值插入其中,将它们从哈希集中删除,并在哈希集中打印它们。
HashSet<T>
类中的 Add()
函数用于将单个值插入哈希集中。除了 Add()
函数之外,HashSet<T>
类中还提供了许多其他有用的函数。
Remove(T val)
函数从我们的哈希集中删除 val
。它将值作为输入参数并将其从我们的哈希集中删除。
C# 中的 List<T>
在 C# 中,list 是强类型对象的集合。可以通过索引访问列表的元素。
列表对象包含许多用于排序、搜索和修改列表的有用方法。它包含在 System.Collection.Generic
命名空间中。
列表的另一个优点是它们提供编译时类型检查并且不执行装箱/取消装箱,因为它们是通用的。数据类型 T
的列表可以用 List<T>
初始化。
以下代码片段演示了我们如何在 C# 中使用列表。
List<int> weirdNumbers = new List<int>();
weirdNumbers.Add(10);
weirdNumbers.Add(17);
weirdNumbers.Add(78);
weirdNumbers.Add(13);
foreach (int val in weirdNumbers) {
Console.WriteLine(val);
}
输出:
10
17
78
13
在上面的代码中,我们在第一行初始化了整数列表 weirdNumbers
,使用 Add()
函数将值插入到列表中,并使用 foreach
循环打印列表中的所有值。
List<T>
类中的 Add()
函数用于将值插入到列表中。除了 Add()
函数之外,List<T>
类中还提供了许多其他有用的函数。
AddRange()
函数可以将另一个数组或列表插入到现有列表中。它将列表或数组作为输入参数,并将列表或数组的元素附加到主列表的末尾。
我们还可以使用 Insert()
函数在列表中的指定索引处插入单个值。Insert()
函数将整数索引和 T
类型值作为输入参数。
我们已经讨论了很多关于向列表中添加新元素的内容。让我们讨论如何从列表中删除现有元素。
Remove(T val)
函数删除列表中第一次出现的 val
。它将值作为输入参数,并从索引 0 开始从列表中删除该值的第一次出现。
RemoveAt(int index)
函数删除列表中特定索引处的值。它将索引作为输入参数并删除放置的任何值。
下面的代码片段将我们讨论的所有函数放在一个简洁的小块中。
List<int> weirdNumbers = new List<int>();
weirdNumbers.Add(10);
weirdNumbers.Add(17);
weirdNumbers.Add(78);
weirdNumbers.Add(13);
weirdNumbers.Insert(3, 31);
Console.WriteLine("List before removal");
foreach (int val in weirdNumbers) {
Console.WriteLine(val);
}
weirdNumbers.Remove(31);
weirdNumbers.RemoveAt(1);
Console.WriteLine("List after removal");
foreach (int val in weirdNumbers) {
Console.WriteLine(val);
}
输出:
List before removal
10
17
78
31
13
List after removal
10
78
13
在上面的代码示例中,我们展示了如何创建一个通用列表、向其中插入值、从列表中删除值以及打印列表中的值。
C# 中的 HashSet<T>
与 List<T>
列表和哈希集都有各自的优点和缺点。虽然散列集比处理大量数据的列表快得多,但列表提供了索引功能。
虽然我们可以对列表进行排序,但哈希集提供了执行集合操作的能力。
总之,列表或哈希集,选择完全取决于我们的问题。
Maisam is a highly skilled and motivated Data Scientist. He has over 4 years of experience with Python programming language. He loves solving complex problems and sharing his results on the internet.
LinkedIn