C#.NET 集合对象(System.Collections)

[size=medium] 1. System.Array 和 System.Collecions.ArrayList

前者是所有数组的抽象基类,每实例化一个数组,就是创建了一个Array类型的实例;后者是可以创建一个大小可变的数组。两者可以使用 BinarySearch进行查询,但必须先进行排序(排序必须实现IComparable或IComparer接口,IComparable提供排序的默认方式;而IComparer为排序提供了其他方式的选择,默认实现为Comparer,区分大小写,而 CaseInsensitiveComparer类是 IComparer 接口的实现,该接口执行不区分大小写的字符串比较。)。

区别:
* Array大小是固定的,而ArrayList大小是可变。
* Array 存储的对象类型必须是相同的,而ArrayList可以存储不同类型的对象。
* 在CLR托管堆上,Array存储的对象必须是连续存储的,而可以不是。
* 两者都继承了IList接口,但由于Array不支持Add,Insert,Remove,RemoeAt方法,所以 Array不能随意的添加、插入、移除对象。
* ArrayList可以使用TrimToResize()方法来压缩内存,实现最小化集合的内存开销。
2. System.Collections.HashTable
通过键/值堆来对数据进行存储,键不能为空,可以按键进行访问;继承了IDictionary接口。
HashTable遍历:
* DictionaryEntry
例:
Hashtable ht = new Hashtable();
foreach (DictionaryEntry item in ht)
{
Console.WriteLine(item.Key.ToString()+"-"+item.Value.ToString());
}
* IDictionaryEnumerator
例:
IDictionaryEnumerator enumertor = ht.GetEnumerator();
while (enumertor.MoveNext())
{
Console.WriteLine(enumertor.Key.ToString()+"-"+enumertor.Value.ToString());
}
3. System.Collectins.SortedList(不常使用)
用于存储键值对,可以按键排序并可按照键和索引访问。
例:
Hashtable ht = new Hashtable();
ht.Add(4, "4");
ht.Add(3, "3");
ht.Add(2, "2");
ht.Add(1, "1");
SortedList sortedList = new SortedList(ht, new Comparer(CultureInfo.CurrentCulture));
Console.WriteLine("按索引访问");
for (int i = 0; i < sortedList.Count; i++)
{
Console.WriteLine(sortedList.GetKey(i).ToString() + "-" + sortedList.GetByIndex(i).ToString());
}
Console.WriteLine("foreach 访问");
foreach (DictionaryEntry item in sortedList)
{
Console.WriteLine(item.Key.ToString() + "-" + item.Value.ToString());
}
4. System.Collections.Queue 和 System.Collections.Stack
Queue 表示对象的先进先出集合。
Stack 表示对象后进先出的集合。
5. System.Collections.BitArray

管理位值的压缩数组,该值表示为布尔值,其中 true 表示位是打开的 (1),false 表示位是关闭的 (0)。
例:
BitArray bitArray = new BitArray(new int[]{9});//初始化,int类型占32位
foreach (bool item in bitArray) //循环输出bitArray值
{
Console.WriteLine(item.ToString());
}
bool flag = bitArray.Get(2);//获取位值的压缩数组的第三项的值
Console.WriteLine(flag);
bitArray.Set(2, !flag);//修改位值的压缩数组第三项的值
Console.WriteLine(bitArray.Get(2));

泛型和非泛型集合对照表:
[table]
|非泛型集合类|泛型集合类|
|ArrayList|List<T>|
|HashTable|DIctionary<T>|
|Queue|Queue<T>|
|Stack|Stack<T>|
|SortedList|SortedList<T>|
[/table][/size]
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值