C#常见的几种集合 ArrayList,Hashtable,List,Dictionary 遍历方法对比

yizhihongxing

C#常见集合的遍历方法对比

在 C# 中,集合是一种存储数据的容器,通常使用集合来代替数组。常见的集合类型有 ArrayList,Hashtable,List 和 Dictionary

下面将从以下几个方面来对比这些集合的遍历方法:

  1. 遍历方式
  2. 遍历性能

ArrayList

ArrayList 是一个可变的数组,可以在运行时动态添加或删除元素。它的遍历方式有以下两种:

for 循环

使用 for 循环遍历 ArrayList 很简单,只需要获取 ArrayList 的 Count 属性来获取元素个数,然后使用索引来获取每个元素即可。

ArrayList arrList = new ArrayList();
arrList.Add("Hello");
arrList.Add("World");
arrList.Add("C#");

for (int i = 0; i < arrList.Count; i++)
{
    Console.WriteLine(arrList[i]);
}

foreach 循环

使用 foreach 循环遍历 ArrayList 更加简单、更加直观,代码也更加易读。

ArrayList arrList = new ArrayList();
arrList.Add("Hello");
arrList.Add("World");
arrList.Add("C#");

foreach (var item in arrList)
{
    Console.WriteLine(item);
}

Hashtable

Hashtable 是一种由键值对组成的集合,类似于字典。它的遍历方式有以下两种:

foreach 循环

使用 foreach 循环遍历 Hashtable 可以轻松地获取到键值对。

Hashtable hashTable = new Hashtable();
hashTable.Add(1, "Hello");
hashTable.Add(2, "World");
hashTable.Add(3, "C#");

foreach (DictionaryEntry item in hashTable)
{
    Console.WriteLine(item.Key + ":" + item.Value);
}

IDictionaryEnumerator 迭代器

使用 IDictionaryEnumerator 迭代器遍历 Hashtable 也可以轻松地获取到键值对。

Hashtable hashTable = new Hashtable();
hashTable.Add(1, "Hello");
hashTable.Add(2, "World");
hashTable.Add(3, "C#");

IDictionaryEnumerator enumerator = hashTable.GetEnumerator();
while (enumerator.MoveNext())
{
    Console.WriteLine(enumerator.Key + ":" + enumerator.Value);
}

List

List 是一个动态数组,是泛型集合的一种。它的遍历方式有以下两种:

for 循环

使用 for 循环遍历 List 很简单,只需要获取 List 的 Count 属性来获取元素个数,然后使用索引来获取每个元素即可。

List<string> stringList = new List<string> { "Hello", "World", "C#" };

for (int i = 0; i < stringList.Count; i++)
{
    Console.WriteLine(stringList[i]);
}

foreach 循环

使用 foreach 循环遍历 List 更加简单、更加直观,代码也更加易读。

List<string> stringList = new List<string> { "Hello", "World", "C#" };

foreach (var item in stringList)
{
    Console.WriteLine(item);
}

Dictionary

Dictionary 是一种由键值对组成的泛型集合,类似于 Hashtable。它的遍历方式有以下两种:

foreach 循环

使用 foreach 循环遍历 Dictionary 可以轻松地获取到键值对。

Dictionary<int, string> dict = new Dictionary<int, string>();
dict.Add(1, "Hello");
dict.Add(2, "World");
dict.Add(3, "C#");

foreach (var item in dict)
{
    Console.WriteLine(item.Key + ":" + item.Value);
}

KeyValuePair 迭代器

使用 KeyValuePair 迭代器遍历 Dictionary 也可以轻松地获取到键值对。

Dictionary<int, string> dict = new Dictionary<int, string>();
dict.Add(1, "Hello");
dict.Add(2, "World");
dict.Add(3, "C#");

IEnumerator<KeyValuePair<int, string>> enumerator = dict.GetEnumerator();
while (enumerator.MoveNext())
{
    Console.WriteLine(enumerator.Current.Key + ":" + enumerator.Current.Value);
}

遍历性能

以上遍历方式在性能方面并没有太大差异,也就是说,所有的遍历方式都可以在 O(n) 的时间复杂度内完成。

不过,在使用 foreach 循环遍历集合时,由于该循环方式是基于迭代器的,会对内存有一定的开销,因此在性能要求较高的场合,建议使用 for 循环遍历集合。

示例说明

我们来看下面的示例:

List<string> stringList = new List<string> { "Hello", "World", "C#" };

for (int i = 0; i < stringList.Count; i++)
{
    Console.WriteLine(stringList[i]);
}

以上代码使用 for 循环遍历了 List 并输出了每个元素的值。

再看下面的示例:

Dictionary<int, string> dict = new Dictionary<int, string>();
dict.Add(1, "Hello");
dict.Add(2, "World");
dict.Add(3, "C#");

foreach (var item in dict)
{
    Console.WriteLine(item.Key + ":" + item.Value);
}

以上代码使用 foreach 循环遍历了 Dictionary 并输出了每个键值对的值。

这两个示例可以帮助读者更好地理解上面提到的遍历方式,并且也可以帮助读者更好地掌握 C# 中常见集合的使用。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:C#常见的几种集合 ArrayList,Hashtable,List,Dictionary 遍历方法对比 - Python技术站

(0)
上一篇 2023年6月7日
下一篇 2023年6月7日

相关文章

  • 详解WPF如何在基础控件上显示Loading等待动画

    下面我会详细讲解如何在WPF基础控件上显示Loading等待动画的完整攻略。 使用WPF Toolkit自带的Loading动画 WPF Toolkit是一个由Microsoft约定和支持的开源项目,该项目包含了一些方便的控件和工具。其中就包含了Loading动画的控件。 第一步:引入WPF Toolkit 首先要引入WPF Toolkit,可以通过NuGe…

    C# 2023年6月6日
    00
  • C#使用Socket实现心跳的方法示例

    下面是详细讲解“C#使用Socket实现心跳的方法示例”的完整攻略。 什么是心跳 心跳指的是客户端与服务器之间的心跳包交互,它是一种保证连接持续性和可靠性的机制。通过心跳包交互,客户端与服务器之间能够实时检测对方的存活状态,进而做出相应的处理,比如重连或关闭连接。 C#使用Socket实现心跳的方法 在C#中,我们可以通过Socket类来实现心跳包交互。实现…

    C# 2023年6月7日
    00
  • C#实现的简单整数四则运算计算器功能示例

    下面我来详细讲解“C#实现的简单整数四则运算计算器功能示例”的完整攻略。 一、搭建开发环境 首先我们需要搭建C#开发环境,可以选择安装Visual Studio或者VSCode。在安装完相应的开发工具后,我们需要创建一个控制台应用程序。 二、思路分析 在实现一个简单的整数四则运算计算器功能示例时,需要以下几个主要步骤: 读取用户输入的整数和运算符号; 根据运…

    C# 2023年6月7日
    00
  • Asp.Net 和 AJAX.Net 的区别第2/2页

    关于”Asp.Net和AJAX.Net的区别”,我们需要先了解它们各自的特点和功能。Asp.Net是一种Web应用程序框架,它能够让开发人员创建出具有交互性和动态特性的Web应用程序。而AJAX.Net是一种Web开发技术,它可以允许页面在不进行重新加载的情况下,更新部分内容,提高了用户体验。 区别在以下几个方面: 数据交互方式 Asp.Net传统的方式是通…

    C# 2023年6月3日
    00
  • HttpWebRequest出错.Section=ResponseHeader Detail=CR

    标题:解决 HttpWebRequest 出错 Section=ResponseHeader,Detail=CR 的攻略 可能出现的错误信息: 当使用 HttpWebRequest 请求 Web 服务器端数据时,有可能会出现 Section=ResponseHeader,Detail=CR 的错误提示,该错误提示可能是由于某些特殊字符在服务器端返回的响应中出…

    C# 2023年5月14日
    00
  • C# Item[Int32]:获取或设置指定索引处的元素

    C#中的数组(Array)是一组同类型的变量集合,使用索引可以访问数组中的元素。数组中的每个元素都有一个编号,这个编号称为索引(Index)。 在C#中,数组的索引从0开始,即第一个元素的索引是0,第二个元素的索引是1,以此类推。在C#中,使用数组的Item[Index]语法就可以访问数组中的元素,其中Index表示元素的索引。 C#中的Item[Int32…

    C# 2023年4月19日
    00
  • C#文件目录操作方法汇总

    C#文件目录操作方法汇总 在C#编程中,文件和目录操作是非常常见的需求。本文总结了常用的C#文件目录操作方法,包括路径操作、目录创建、文件创建、文件读写、文件复制、文件删除等多个方面,旨在帮助读者快速实现对文件和目录的操作。 路径操作 获取当前应用程序执行文件所在目录 string path = AppDomain.CurrentDomain.BaseDir…

    C# 2023年6月7日
    00
  • C#使用Socket快速判断数据库连接是否正常的方法

    以下是C#使用Socket快速判断数据库连接是否正常的方法的详细攻略。 为什么需要使用Socket来判断数据库连接是否正常 在开发应用程序时,我们通常需要将数据库与应用程序进行连接,以提供数据的读写操作。但是,有时候我们需要判断数据库连接是否正常,以避免在后期出现一些问题。而使用Socket来判断数据库连接是否正常,则可以在较短的时间内,得出结论,并提供更好…

    C# 2023年6月2日
    00
合作推广
合作推广
分享本页
返回顶部