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

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日

相关文章

  • c#单例模式(Singleton)的6种实现

    单例模式(Singleton) 单例模式是一种创建型设计模式,它保证一个类只有一个实例,而且自行实例化并向整个系统提供这个实例。在需要确保有且仅有一个对象被创建时,使用单例模式就是最佳选择。 实现单例模式的六种方法 1. 饿汉式(饿汉式单例模式是线程安全的,极其简单) 饿汉式单例模式是指,在类加载的时候就创建一个对象实例,并且永久驻留在内存中,以供后续使用。…

    C# 2023年6月6日
    00
  • C#实现递归调用的Lambda表达式

    下面是详细讲解C#实现递归调用的Lambda表达式的完整攻略。 什么是Lambda表达式 Lambda表达式是C# 3.0引入的一个新特性,它可以让你在代码中直接定义一些简单的方法,而不需要像传统的方式那样需要声明一个函数。Lambda表达式的语法比较简洁,可以提高代码的可读性和可维护性。 下面是一个简单的Lambda表达式的例子: Func<int,…

    C# 2023年6月7日
    00
  • 详解Asp.Net Core 发布和部署( MacOS + Linux + Nginx )

    Asp.Net Core是一个跨平台的Web应用程序框架,可以在Windows、MacOS和Linux等多个操作系统上运行。在本文中,我们将详细讲解如何在MacOS和Linux上发布和部署Asp.Net Core应用程序,并使用Nginx作为反向代理服务器,包括环境搭建、代码实现、示例说明等。 环境搭建 在开始发布和部署Asp.Net Core应用程序之前,…

    C# 2023年5月16日
    00
  • C#获取路径的几种方式实例分析

    C#获取路径的几种方式实例分析 在C#编程中,获取路径是一项非常常见的任务,无论是用于读取文件、写入文件还是其他操作,都离不开路径的使用。本文将介绍C#中获取路径的几种方式,并提供实际示例以帮助读者理解。 1. 从文件名获取路径 在C#中,获取路径最简单的方式就是从文件名获取。下面的代码演示了如何使用Path.GetDirectoryName()方法从文件名…

    C# 2023年6月1日
    00
  • .NET 6 即将到来的新特性 隐式命名空间引用

    .NET 6 即将到来的新特性:隐式命名空间引用 在 .NET 6 中,引入了一项新特性:隐式命名空间引用。这项特性可以让我们在项目中使用命名空间时更加方便,无需显式地引用命名空间。本攻略将详细介绍隐式命名空间引用的使用方法,并提供两个示例说明。 隐式命名空间引用 在 .NET 6 中,我们可以使用隐式命名空间引用来简化项目中的命名空间引用。隐式命名空间引用…

    C# 2023年5月17日
    00
  • ASP.NET Core使用EF查询数据

    ASP.NET Core使用EF查询数据的完整攻略 在本攻略中,我们将详细讲解如何在ASP.NET Core应用程序中使用Entity Framework Core (EF Core)查询数据,并提供两个示例说明。 步骤一:安装NuGet包 在ASP.NET Core应用程序中使用EF Core查询数据,需要安装Microsoft.EntityFramewo…

    C# 2023年5月17日
    00
  • C#根据IP地址查询所属地区实例详解

    C#根据IP地址查询所属地区实例详解 前言 在实际的web开发中,我们经常会使用到IP地址的查询功能。本文主要介绍如何使用C#根据IP地址查询所属地区的具体实现过程。 步骤 1. 获取IP地址 我们可以使用ASP.NET中的Request对象获取用户IP地址,示例代码如下: string userIP = Request.UserHostAddress; 2…

    C# 2023年6月1日
    00
  • C#实现系统休眠或静止休眠的方法

    下面是C#实现系统休眠或静止休眠的方法的完整攻略。 1. 系统休眠 1.1 方法介绍 我们可以通过Windows API去实现系统休眠,具体的API是SetSuspendState。该方法有两个参数,参数一表示是否进入睡眠(0表示待机,1表示睡眠),参数二表示是否启用快速恢复。 1.2 代码示例 下面是一个简单的实现系统休眠的代码示例: using Syst…

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