C#常见集合的遍历方法对比
在 C# 中,集合是一种存储数据的容器,通常使用集合来代替数组。常见的集合类型有 ArrayList,Hashtable,List
下面将从以下几个方面来对比这些集合的遍历方法:
- 遍历方式
- 遍历性能
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<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
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<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