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日

相关文章

  • asp.net利用后台实现直接生成html分页的方法

    当我们开发一个网站时,通常会遇到需要进行数据分页展示的情况,而且用户体验良好的数据分页需要满足快速响应、友好的界面和数据的实时性等需求。为了解决这个问题,我们通常采用后台直接生成 HTML 分页的方式。本文将详细讲解 ASP.NET 中如何通过后台实现直接生成 HTML 分页的方法,包含以下内容: 所需控件和组件的引入 要完成后台直接生成 HTML 分页的功…

    C# 2023年6月3日
    00
  • C# CM框架实现多页面管理的实例代码

    以下是详细讲解“C# CM框架实现多页面管理的实例代码”的完整攻略: 1. 什么是C# CM框架 C# CM框架全称是Carsen Management框架,是一种基于Model-View-ViewModel(MVVM)模式开发的移动端框架。它可以帮助开发者快速构建跨平台的移动应用程序。其中,模型(Model)是指应用程序的数据模型,视图(View)是指应用…

    C# 2023年5月31日
    00
  • c# 如何将RadioButton与DataTable数据进行绑定

    首先,需要注意的是,RadioButton控件是WinForm中的控件,而DataTable是数据存储的一种方式,它们并没有直接的绑定方式,因此我们需要自己编写代码来完成二者的绑定。 以下是一个使用C#语言,将RadioButton与DataTable数据进行绑定的完整攻略: 1. 获得DataTable数据 首先,我们需要从数据源(比如数据库、文本文件等)…

    C# 2023年6月6日
    00
  • ASP.NET Core 6框架揭秘实例演示之如何承载你的后台服务

    ASP.NET Core 6框架揭秘实例演示之如何承载你的后台服务 在本攻略中,我们将详细讲解如何使用ASP.NET Core 6框架承载你的后台服务。我们将介绍ASP.NET Core 6框架的基础知识、如何创建和承载后台服务的步骤以及两个示例说明。 ASP.NET Core 6框架基础知识 ASP.NET Core 6框架是一个跨平台的开源框架,用于构建…

    C# 2023年5月17日
    00
  • 浅谈如何使用vb.net从数据库中提取数据

    如何使用VB.NET从数据库中提取数据 提取数据是软件开发中经常需要完成的任务之一。在VB.NET中,我们可以轻松地从数据库中提取数据。本文将介绍如何使用VB.NET从数据库中提取数据。 步骤1:连接到数据库 首先,我们需要连接到数据库。可以使用VB.NET中的OleDb Connection对象来实现这一点。以下是需要连接到Microsoft Access…

    C# 2023年5月31日
    00
  • C# 进制转换的实现(二进制、十六进制、十进制互转)

    下面我将为大家详细讲解 C# 中的进制转换实现,内容包括二进制、十六进制、十进制互转的方法。 前置知识 在进行进制转换之前,我们需要了解以下几个概念: 二进制:以 0、1 为基础的计数系统。 十进制:以 0-9 为基础的计数系统。 十六进制:以 0-9 和 A-F 为基础的计数系统。 进位:某一位达到基数时,进位到前一位并加 1。 借位:某一位借位时,向前一…

    C# 2023年6月7日
    00
  • C#利用Random得随机数求均值、方差、正态分布的方法

    生成指定数量的随机数 首先需要生成指定数量的随机数,C#中使用Random类可以很方便地实现这个功能。下面是一个生成100个随机数的示例代码: int n = 100; double[] nums = new double[n]; Random rand = new Random(); for (int i = 0; i < n; i++) { num…

    C# 2023年6月7日
    00
  • Android仿微信菜单(Menu)(使用C#和Java分别实现)

    Android仿微信菜单(Menu)攻略 1. 简介 本攻略旨在介绍如何使用C#和Java分别实现Android仿微信菜单。该菜单在Android应用开发领域中较为常见,本攻略将从以下几个方面进行讲解: 什么是Android仿微信菜单? C#实现Android仿微信菜单的步骤及示例 Java实现Android仿微信菜单的步骤及示例 2. Android仿微信…

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