迹忆客 专注技术分享

当前位置:主页 > 学无止境 > 编程语言 >

C# 中的 HashSet 与列表

作者:迹忆客 最近更新:2024/01/16 浏览次数:

本教程将讨论 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>

列表和哈希集都有各自的优点和缺点。虽然散列集比处理大量数据的列表快得多,但列表提供了索引功能。

虽然我们可以对列表进行排序,但哈希集提供了执行集合操作的能力。

总之,列表或哈希集,选择完全取决于我们的问题。

转载请发邮件至 1244347461@qq.com 进行申请,经作者同意之后,转载请以链接形式注明出处

本文地址:

相关文章

在 C# 中按值对字典排序

发布时间:2024/01/19 浏览次数:153 分类:编程语言

有两种主要方法可用于按 C# 中的值对字典进行排序:list 方法和 Linq 方法。使用 C# 中的 List 方法按值对字典进行排序。C# 字典数据结构以 key:value 对的形式存储数据。

在 C# 中更新字典值

发布时间:2024/01/19 浏览次数:72 分类:编程语言

本教程演示如何使用键作为索引来更新 C# 字典中的值。dictionary 是一种集合类型,与只能通过索引或值本身访问值的数组或列表不同,字典使用键和值对来存储其数据。

在 C# 中检查字典键是否存在

发布时间:2024/01/19 浏览次数:142 分类:编程语言

本文教我们如何检查或检测 C# 中是否存在字典键。Dictionary 倾向于映射键和值。它包含特定值映射到的特定键。不允许有重复的键,这是字典的全部目标。

C# 中的字典与哈希表

发布时间:2024/01/19 浏览次数:166 分类:编程语言

本指南将讨论 C# 中 Dictionary 和 Hashtable 之间的区别。你应该更喜欢哪一个?本指南将讨论 C# 中 Dictionary 和 Hashtable 之间的区别。

C# 将对象转换为 JSON 字符串

发布时间:2024/01/19 浏览次数:157 分类:编程语言

本文介绍如何将 C# 对象转换为 C# 中的 JSON 字符串的不同方法。它介绍了 JavaScriptSerializer().Serialize(),JsonConvert.SerializeObject()和 JObject.FromObject()之类的方法。

C# 解析 JSON

发布时间:2024/01/19 浏览次数:106 分类:编程语言

本文介绍如何使用 C# 解析 JSON 的不同方法,比如 JsonConvert.DeserializeObject(),JObject.Parse()和 JavaScriptSerializer()之类的方法。

获取 C# 中 foreach 循环当前迭代的索引

发布时间:2024/01/19 浏览次数:88 分类:编程语言

本文介绍如何在 C# 中获取 foreach 循环当前迭代的索引。在 C# 中,我们主要有两个循环,for 循环和 foreach 循环。foreach 循环被认为是最好的,因为它适用于所有类型的操作。

C# 中的十进制文字

发布时间:2024/01/19 浏览次数:194 分类:编程语言

本教程解释了 C# 中的十进制文字以及如何使用它在 C# 中初始化变量时,你可能必须明确指定你希望它用于数值数据类型的数据类型。

扫一扫阅读全部技术教程

社交账号
  • https://www.github.com/onmpw
  • qq:1244347461

最新推荐

教程更新

热门标签

扫码一下
查看教程更方便