导读:
作者:清清月儿
说明:MSDN没有说出几种集合类其间的区别,当然欲知更多细节可参考MSDN。
一.先来说说 数组的 不足(也可以说 集合与数组的区别):
1.数组是固定大小的,不能伸缩。虽然System.Array.Resize这个泛型方法可以重置数组大小,但是该方法是重新创建新设置大小的数组,用的是旧数组的元素初始化。随后以前的数组就废弃!而集合却是可变长的
2.数组要声明元素的类型,集合类的元素类型却是object.
3.数组可读可写不能声明只读数组。集合类可以提供ReadOnly方法以只读方式使用集合。
4.数组要有整数下标才能访问特定的元素,然而很多时候这样的下标并不是很有用。集合也是数据列表却不使用下标访问。很多时候集合有定制的下标类型,对于队列和栈根本就不支持下标访问!
二.下面讲述6种常用集合
1.ArrayList类
using System;using System.Collections.Generic;using System.Text;using System.Collections;namespace ConsoleApplication1{
class Program
{
static void Main(string[] args)
{
ArrayList al = new ArrayList();
al.Add(100);//单个添加 foreach (int number in new int[6] { 9, 3, 7, 2, 4, 8 })
{
al.Add(number);//集体添加方法一//清清月儿 http://blog.csdn.net/21aspnet/ } int[] number2 = new int[2] { 11,12 } al.AddRange(number2);//集体添加方法二 al.Remove(3);//移除值为3的 al.RemoveAt(3);//移除第3个 ArrayList al2 = new ArrayList(al.GetRange(1, 3));//新ArrayList只取旧ArrayList一部份 Console.WriteLine("遍历方法一:");
foreach (int i in al)//不要强制转换 {
Console.WriteLine(i);//遍历方法一 } Console.WriteLine("遍历方法二:");
for (int i = 0 i != al2.Count; i++)//数组是length {
int number = (int)al2[i];//一定要强制转换 Console.WriteLine(number);//遍历方法二 } } }}
2.Stack类
栈, 后进先出。push方法入栈,pop方法出栈。
using System;using System.Collections.Generic;using System.Text;using System.Collections;namespace ConsoleApplication1{
class Program
{
static void Main(string[] args)
{
Stack sk = new Stack();
Stack sk2 = new Stack();
foreach (int i in new int[4] { 1, 2, 3, 4 })
{
sk.Push(i);//填充 sk2.Push(i);
}
foreach (int i in sk)
{
Console.WriteLine(i);//遍历 } sk.Pop();
Console.WriteLine("Pop");
foreach (int i in sk)
{
Console.WriteLine(i);
}
sk2.Peek();//弹出最后一项不删除//清清月儿 http://blog.csdn.net/21aspnet/ Console.WriteLine("Peek");
foreach (int i in sk2)
{
Console.WriteLine(i);
} while (sk2.Count != 0)
{
int i = (int)sk2.Pop();//清空 sk2.Pop();//清空 } Console.WriteLine("清空");
foreach (int i in sk2)
{
Console.WriteLine(i);
} } }}
3.Queue类
队列, 先进先出。enqueue方法入队列,dequeue方法出队列。
using System;using System.Collections.Generic;using System.Text;using System.Collections;namespace ConsoleApplication1{
class Program
{
static void Main(string[] args)
{
Queue qu = new Queue();
Queue qu2 = new Queue();
foreach (int i in new int[4] { 1, 2, 3, 4 })
{
qu.Enqueue(i);//填充 qu2.Enqueue(i);
}
foreach (int i in qu)
{
Console.WriteLine(i);//遍历 } qu.Dequeue();
Console.WriteLine("Dequeue");
foreach (int i in qu)
{
Console.WriteLine(i);
}
qu2.Peek();//弹出最后一项不删除 Console.WriteLine("Peek");
foreach (int i in qu2)
{
Console.WriteLine(i);
} while (qu2.Count != 0)
{
int i = (int)qu2.Dequeue();//清空 qu2.Dequeue();//清空 } Console.WriteLine("清空");
foreach (int i in qu2)
{
Console.WriteLine(i);
} } }}
4.Hashtable类
哈希表, 名-值对。类似于字典(比数组更强大)。哈希表是经过优化的,访问下标的对象先散列过。如果以任意类型键值访问其中元素会快于其他集合。GetHashCode()方法返回一个int型数据,使用这个键的值生成该int型数据。哈希表获取这个值最后返回一个索引,表示带有给定散列的数据项在字典中存储的位置。
using System;using System.Collections.Generic;using System.Text;using System.Collections;namespace ConsoleApplication1{
class Program
{
public static void Main()
{
// Creates and initializes a new Hashtable. Hashtable myHT = new Hashtable();
myHT.Add("one", "The");
myHT.Add("two", "quick");
myHT.Add("three", "brown");
myHT.Add("four", "fox");
// Displays the Hashtable.//清清月儿 http://blog.csdn.net/21aspnet/ Console.WriteLine("The Hashtable contains the following:");
PrintKeysAndValues(myHT);
} public static void PrintKeysAndValues(Hashtable myHT)
{
foreach (string s in myHT.Keys)
Console.WriteLine(s);
Console.WriteLine("-KEY- -VALUE-");
foreach (DictionaryEntry de in myHT)
Console.WriteLine("{0}: {1}", de.Key, de.Value);
Console.WriteLine();
} }}
5.SortedList类
与哈希表类似,区别在于SortedList中的Key数组排好序的。
using System;using System.Collections.Generic;using System.Text;using System.Collections;namespace ConsoleApplication1{
class Program
{
public static void Main()
{
SortedList sl = new SortedList();
sl["c"] = 41 sl["a"] = 42 sl["d"] = 11 sl["b"] = 13 foreach (DictionaryEntry element in sl)
{
string s = (string)element.Key;
int i = (int)element.Value;
Console.WriteLine("{0},{1}",s,i);
} } }}
6.NameValueCollection类
官方给NameValueCollection定义为特殊集合一类,在System.Collections.Specialized下。
System.Collections.Specialized下还有HybridDicionary类,建议少于10个元素用HybridDicionary,当元素增加会自动转为HashTable。
System.Collections.Specialized下还有HybridDicionary类,字符串集合。
System.Collections.Specialized下还有其他类大家可以各取所需!
言归正转主要说NameValueCollection,HashTable 和 NameValueCollection很类似但是他们还是有区别的,HashTable 的KEY是唯一性,而NameValueCollection则不唯一!
using System;using System.Collections.Generic;using System.Collections;using System.Collections.Specialized;namespace ConsoleApplication1{
class Program
{
static void Main(string[] args)
{
System.Collections.Hashtable ht = new System.Collections.Hashtable();
ht.Add("DdpMDisplaySeq".Trim(), "Display Sequence".Trim());
ht.Add("DdpMNameChi".Trim(), "Name (Chinese)".Trim());
ht.Add("DdpMNameEng".Trim(), "Name (English)".Trim());
ht.Add("Comment".Trim(), "Comment".Trim());
ht.Add("DdpMMarketCode".Trim(), "Market Code".Trim());
foreach (object key in ht.Keys)
{
Console.WriteLine("{0}/{1} {2},{3}", key, ht[key], key.GetHashCode(), ht[key].GetHashCode());
} Console.WriteLine("");//清清月儿 http://blog.csdn.net/21aspnet/
NameValueCollection myCol = new NameValueCollection();
myCol.Add("DdpMDisplaySeq".Trim(), "Display Sequence".Trim());
myCol.Add("DdpMNameChi".Trim(), "Name (Chinese)".Trim());
myCol.Add("DdpMNameChi".Trim(), "Name (English)".Trim());
myCol.Add("Comment".Trim(), "Comment".Trim());
myCol.Add("DdpMMarketCode".Trim(), "Market Code".Trim());
foreach (string key in myCol.Keys)
{
Console.WriteLine("{0}/{1} {2},{3}", key, myCol[key], key.GetHashCode(), myCol[key].GetHashCode());
} } }}
Trackback: http://tb.blog.csdn.net/TrackBack.aspx?PostId=1667862
[收藏到我的网摘] [发送Trackback] 清清月儿发表于 2007年06月27日 00:35:00
评论
# wsjeep 发表于2007-06-27 11:16:42 IP: 218.83.157.*
不错
# yxjwang 发表于2007-06-27 11:27:26 IP: 218.57.99.*
好!!学习
# yiwimi 发表于2007-06-27 11:44:09 IP: 60.23.141.*
好
# csnewbie 发表于2007-06-27 13:29:24 IP: 222.99.123.*
第一个例子(数组)
int number = (int)al2[i];//一定要强制转换
为什么一定要强制转化呢?
而 foreach里为什么又无需强制转换呢?
# csnewbie 发表于2007-06-27 13:42:50 IP: 222.99.123.*
Queue类 下面的那张图是错误的
结果应该是:
1
2
3
4
Dequeue
2
3
4
Peek
1
2
3
4
清空
2007-06-27 14:35:57作者回复:
谢谢提醒 我上传图片时弄错了 现已经更正 谢谢!!!
# julong88 发表于2007-06-27 13:57:37 IP: 222.85.71.*
全用过
# kmiaoer 发表于2007-06-27 15:26:20 IP: 60.0.132.*
嘿嘿 支持月儿姐~~
# kkun_3yue3 发表于2007-06-27 18:07:41 IP: 219.143.46.*
楼主辛苦了,谢谢分享
# stonepeter 发表于2007-06-27 22:09:35 IP: 58.31.93.*
关于Dictionary没什么要说的?
# ffwait 发表于2007-06-27 22:10:07 IP: 58.24.216.*
楼主辛苦了。
# ffwait 发表于2007-06-27 22:12:03 IP: 58.24.216.*
很少用队列,哈希表经常用。
# jinjiangdongfang 发表于2007-06-27 22:56:25 IP: 59.46.63.*
真的很不错,现在很少有人能够真正的活用这些东东了.谢谢!
# bamboo_ding 发表于2007-06-28 09:08:02 IP: 222.92.22.*
在这学到好多东西了,顶并收藏着。。。
# fox_sky 发表于2007-06-28 09:09:04 IP: 218.18.42.*
楼主说集合类的元素类型却是object,此话似乎不妥,按照你这么说,List ,Stack 等都不是集合型了?他们的元素类型是T。
# master_leo 发表于2007-06-28 09:41:28 IP: 218.25.160.*
可开发咳嗽得发酸
# Oceanson 发表于2007-06-28 11:13:28 IP: 210.13.84.*
.net 2.0的范型集合才是目前的集合使用的比较多的集合处理
Collection 对应namedCollection
Dictionary 对应hashTable
...
# Gary Gong 发表于2007-06-28 11:18:37 IP: 222.128.6.*
感谢天,感谢地,感谢月儿照耀着大地。
上面六个用过三个,最后一个NameValueCollection没有用过。
建议在实例中添加GetHashCode()方法的介绍
然后有个疑问想问问
很菜鸟的问题
构建Hashtable后,往myHT添加元素
Hashtable myHT = new Hashtable();
myHT.Add("one", "The");
myHT.Add("two", "quick");
myHT.Add("three", "brown");
myHT.Add("four", "fox");
它的key的顺序是one two three fout
为什么贴图中,在打印集合的时候
foreach (string s in myHT.Keys)
Console.WriteLine(s);
顺序变成了
one
three
four
two
是哈希表自动变化的?怎么理解啊?谢谢。
# ProjectDD 发表于2007-06-28 11:34:08 IP: 218.88.73.*
一般都用泛型的集合了,NET默认给的using可以说明这点.
# king_wgj 发表于2007-06-28 11:34:09 IP: 60.191.55.*
不错。学习了。!
# lnzsc 发表于2007-06-28 13:34:53 IP: 222.69.242.*
第一个例子(数组)
int number = (int)al2[i];//一定要强制转换
为什么一定要强制转化呢?
而 foreach里为什么又无需强制转换呢?
月儿你好,你的很多大作我都拜读过,学到很多东西,所以常看你的帖子。
这个帖子很好,我正在逐个学习,发现不需要强制转换也行的。
我用的是c# express 2005。不知道为什么你那里需要强制转换。
# lnzsc 发表于2007-06-28 14:16:09 IP: 222.69.242.*
在SortedList中的代码:
string s = (string)element.Key;
int i = (int)element.Value;
是可以省略的,我的代码是:
Console.WriteLine("{0},{1}", element.Key, element.Value);
不过还是非常感谢月儿。
# weiky626 发表于2007-06-28 14:52:03 IP: 218.18.36.*
充其量是每个集合类举了个例子怎么用,没看到哪个地方有“大比拼”影子,还以为楼主会分析各个集合类的有略呢!楼主的题目有待斟酌
# xbt746 发表于2007-06-28 16:59:32 IP: 58.19.119.*
呵呵,学习一下
# DreamNoYetBecomeTrue 发表于2007-06-28 17:54:00 IP: 121.227.87.*
刚刚接触C#学习中
谢谢LZ
# ericfine 发表于2007-06-29 10:17:22 IP: 205.243.112.*
比了半天没比出优伪来呀 =_= 月儿MM加油
# woaivs 发表于2007-06-29 10:21:09 IP: 218.106.184.*
是女的?很强啊。
# 节能 发表于2007-06-29 12:30:27 IP: 222.212.66.*
很无聊
# cnlcg 发表于2007-06-29 18:07:21 IP: 220.207.140.*
哎,现在对。net的类库还不了解
# cnlcg 发表于2007-06-29 18:18:58 IP: 220.202.74.*
哎,现在对。net的类库还不了解
# xingzhiyun 发表于2007-06-30 23:22:41 IP: 221.204.88.*
都试了,记了笔记,谢谢
# gcgc1225 发表于2007-07-01 18:46:14 IP: 219.141.1.*
学习学习
# netlangzi 发表于2007-07-03 16:57:36 IP: 220.164.63.*
谢谢哦.
清清月儿是女的吗?
# zhrun 发表于2007-07-08 00:02:00 IP: 222.211.220.*
我是常客 学习
# winnerzone 发表于2007-07-11 14:48:14 IP: 219.238.215.*
不知道List算不算一个.
# wangwang008 发表于2007-08-07 08:17:16 IP: 218.25.25.*
学习中。谢谢!我想问一下,你那些代码是放在什么东西里面贴出来的。
# lgg06 发表于2007-08-17 11:38:25 IP: 218.83.157.*
>>数组要声明元素的类型,集合类的元素类型却是object.
kao,什么人啊. 按你的意思把范型费了算了,退一万步,,你自个用object[] 拉倒
大名
网址
校验码:
评论
当前用户设置只有注册用户才能发表评论。如果你没有登录,请点击登录
本文转自
http://blog.csdn.net/21aspnet/archive/2007/06/27/1667862.aspx
作者:清清月儿
说明:MSDN没有说出几种集合类其间的区别,当然欲知更多细节可参考MSDN。
一.先来说说 数组的 不足(也可以说 集合与数组的区别):
1.数组是固定大小的,不能伸缩。虽然System.Array.Resize这个泛型方法可以重置数组大小,但是该方法是重新创建新设置大小的数组,用的是旧数组的元素初始化。随后以前的数组就废弃!而集合却是可变长的
2.数组要声明元素的类型,集合类的元素类型却是object.
3.数组可读可写不能声明只读数组。集合类可以提供ReadOnly方法以只读方式使用集合。
4.数组要有整数下标才能访问特定的元素,然而很多时候这样的下标并不是很有用。集合也是数据列表却不使用下标访问。很多时候集合有定制的下标类型,对于队列和栈根本就不支持下标访问!
二.下面讲述6种常用集合
1.ArrayList类
using System;using System.Collections.Generic;using System.Text;using System.Collections;namespace ConsoleApplication1{
class Program
{
static void Main(string[] args)
{
ArrayList al = new ArrayList();
al.Add(100);//单个添加 foreach (int number in new int[6] { 9, 3, 7, 2, 4, 8 })
{
al.Add(number);//集体添加方法一//清清月儿 http://blog.csdn.net/21aspnet/ } int[] number2 = new int[2] { 11,12 } al.AddRange(number2);//集体添加方法二 al.Remove(3);//移除值为3的 al.RemoveAt(3);//移除第3个 ArrayList al2 = new ArrayList(al.GetRange(1, 3));//新ArrayList只取旧ArrayList一部份 Console.WriteLine("遍历方法一:");
foreach (int i in al)//不要强制转换 {
Console.WriteLine(i);//遍历方法一 } Console.WriteLine("遍历方法二:");
for (int i = 0 i != al2.Count; i++)//数组是length {
int number = (int)al2[i];//一定要强制转换 Console.WriteLine(number);//遍历方法二 } } }}
2.Stack类
栈, 后进先出。push方法入栈,pop方法出栈。
using System;using System.Collections.Generic;using System.Text;using System.Collections;namespace ConsoleApplication1{
class Program
{
static void Main(string[] args)
{
Stack sk = new Stack();
Stack sk2 = new Stack();
foreach (int i in new int[4] { 1, 2, 3, 4 })
{
sk.Push(i);//填充 sk2.Push(i);
}
foreach (int i in sk)
{
Console.WriteLine(i);//遍历 } sk.Pop();
Console.WriteLine("Pop");
foreach (int i in sk)
{
Console.WriteLine(i);
}
sk2.Peek();//弹出最后一项不删除//清清月儿 http://blog.csdn.net/21aspnet/ Console.WriteLine("Peek");
foreach (int i in sk2)
{
Console.WriteLine(i);
} while (sk2.Count != 0)
{
int i = (int)sk2.Pop();//清空 sk2.Pop();//清空 } Console.WriteLine("清空");
foreach (int i in sk2)
{
Console.WriteLine(i);
} } }}
3.Queue类
队列, 先进先出。enqueue方法入队列,dequeue方法出队列。
using System;using System.Collections.Generic;using System.Text;using System.Collections;namespace ConsoleApplication1{
class Program
{
static void Main(string[] args)
{
Queue qu = new Queue();
Queue qu2 = new Queue();
foreach (int i in new int[4] { 1, 2, 3, 4 })
{
qu.Enqueue(i);//填充 qu2.Enqueue(i);
}
foreach (int i in qu)
{
Console.WriteLine(i);//遍历 } qu.Dequeue();
Console.WriteLine("Dequeue");
foreach (int i in qu)
{
Console.WriteLine(i);
}
qu2.Peek();//弹出最后一项不删除 Console.WriteLine("Peek");
foreach (int i in qu2)
{
Console.WriteLine(i);
} while (qu2.Count != 0)
{
int i = (int)qu2.Dequeue();//清空 qu2.Dequeue();//清空 } Console.WriteLine("清空");
foreach (int i in qu2)
{
Console.WriteLine(i);
} } }}
4.Hashtable类
哈希表, 名-值对。类似于字典(比数组更强大)。哈希表是经过优化的,访问下标的对象先散列过。如果以任意类型键值访问其中元素会快于其他集合。GetHashCode()方法返回一个int型数据,使用这个键的值生成该int型数据。哈希表获取这个值最后返回一个索引,表示带有给定散列的数据项在字典中存储的位置。
using System;using System.Collections.Generic;using System.Text;using System.Collections;namespace ConsoleApplication1{
class Program
{
public static void Main()
{
// Creates and initializes a new Hashtable. Hashtable myHT = new Hashtable();
myHT.Add("one", "The");
myHT.Add("two", "quick");
myHT.Add("three", "brown");
myHT.Add("four", "fox");
// Displays the Hashtable.//清清月儿 http://blog.csdn.net/21aspnet/ Console.WriteLine("The Hashtable contains the following:");
PrintKeysAndValues(myHT);
} public static void PrintKeysAndValues(Hashtable myHT)
{
foreach (string s in myHT.Keys)
Console.WriteLine(s);
Console.WriteLine("-KEY- -VALUE-");
foreach (DictionaryEntry de in myHT)
Console.WriteLine("{0}: {1}", de.Key, de.Value);
Console.WriteLine();
} }}
5.SortedList类
与哈希表类似,区别在于SortedList中的Key数组排好序的。
using System;using System.Collections.Generic;using System.Text;using System.Collections;namespace ConsoleApplication1{
class Program
{
public static void Main()
{
SortedList sl = new SortedList();
sl["c"] = 41 sl["a"] = 42 sl["d"] = 11 sl["b"] = 13 foreach (DictionaryEntry element in sl)
{
string s = (string)element.Key;
int i = (int)element.Value;
Console.WriteLine("{0},{1}",s,i);
} } }}
6.NameValueCollection类
官方给NameValueCollection定义为特殊集合一类,在System.Collections.Specialized下。
System.Collections.Specialized下还有HybridDicionary类,建议少于10个元素用HybridDicionary,当元素增加会自动转为HashTable。
System.Collections.Specialized下还有HybridDicionary类,字符串集合。
System.Collections.Specialized下还有其他类大家可以各取所需!
言归正转主要说NameValueCollection,HashTable 和 NameValueCollection很类似但是他们还是有区别的,HashTable 的KEY是唯一性,而NameValueCollection则不唯一!
using System;using System.Collections.Generic;using System.Collections;using System.Collections.Specialized;namespace ConsoleApplication1{
class Program
{
static void Main(string[] args)
{
System.Collections.Hashtable ht = new System.Collections.Hashtable();
ht.Add("DdpMDisplaySeq".Trim(), "Display Sequence".Trim());
ht.Add("DdpMNameChi".Trim(), "Name (Chinese)".Trim());
ht.Add("DdpMNameEng".Trim(), "Name (English)".Trim());
ht.Add("Comment".Trim(), "Comment".Trim());
ht.Add("DdpMMarketCode".Trim(), "Market Code".Trim());
foreach (object key in ht.Keys)
{
Console.WriteLine("{0}/{1} {2},{3}", key, ht[key], key.GetHashCode(), ht[key].GetHashCode());
} Console.WriteLine("");//清清月儿 http://blog.csdn.net/21aspnet/
NameValueCollection myCol = new NameValueCollection();
myCol.Add("DdpMDisplaySeq".Trim(), "Display Sequence".Trim());
myCol.Add("DdpMNameChi".Trim(), "Name (Chinese)".Trim());
myCol.Add("DdpMNameChi".Trim(), "Name (English)".Trim());
myCol.Add("Comment".Trim(), "Comment".Trim());
myCol.Add("DdpMMarketCode".Trim(), "Market Code".Trim());
foreach (string key in myCol.Keys)
{
Console.WriteLine("{0}/{1} {2},{3}", key, myCol[key], key.GetHashCode(), myCol[key].GetHashCode());
} } }}
Trackback: http://tb.blog.csdn.net/TrackBack.aspx?PostId=1667862
[收藏到我的网摘] [发送Trackback] 清清月儿发表于 2007年06月27日 00:35:00
评论
# wsjeep 发表于2007-06-27 11:16:42 IP: 218.83.157.*
不错
# yxjwang 发表于2007-06-27 11:27:26 IP: 218.57.99.*
好!!学习
# yiwimi 发表于2007-06-27 11:44:09 IP: 60.23.141.*
好
# csnewbie 发表于2007-06-27 13:29:24 IP: 222.99.123.*
第一个例子(数组)
int number = (int)al2[i];//一定要强制转换
为什么一定要强制转化呢?
而 foreach里为什么又无需强制转换呢?
# csnewbie 发表于2007-06-27 13:42:50 IP: 222.99.123.*
Queue类 下面的那张图是错误的
结果应该是:
1
2
3
4
Dequeue
2
3
4
Peek
1
2
3
4
清空
2007-06-27 14:35:57作者回复:
谢谢提醒 我上传图片时弄错了 现已经更正 谢谢!!!
# julong88 发表于2007-06-27 13:57:37 IP: 222.85.71.*
全用过
# kmiaoer 发表于2007-06-27 15:26:20 IP: 60.0.132.*
嘿嘿 支持月儿姐~~
# kkun_3yue3 发表于2007-06-27 18:07:41 IP: 219.143.46.*
楼主辛苦了,谢谢分享
# stonepeter 发表于2007-06-27 22:09:35 IP: 58.31.93.*
关于Dictionary没什么要说的?
# ffwait 发表于2007-06-27 22:10:07 IP: 58.24.216.*
楼主辛苦了。
# ffwait 发表于2007-06-27 22:12:03 IP: 58.24.216.*
很少用队列,哈希表经常用。
# jinjiangdongfang 发表于2007-06-27 22:56:25 IP: 59.46.63.*
真的很不错,现在很少有人能够真正的活用这些东东了.谢谢!
# bamboo_ding 发表于2007-06-28 09:08:02 IP: 222.92.22.*
在这学到好多东西了,顶并收藏着。。。
# fox_sky 发表于2007-06-28 09:09:04 IP: 218.18.42.*
楼主说集合类的元素类型却是object,此话似乎不妥,按照你这么说,List ,Stack 等都不是集合型了?他们的元素类型是T。
# master_leo 发表于2007-06-28 09:41:28 IP: 218.25.160.*
可开发咳嗽得发酸
# Oceanson 发表于2007-06-28 11:13:28 IP: 210.13.84.*
.net 2.0的范型集合才是目前的集合使用的比较多的集合处理
Collection 对应namedCollection
Dictionary 对应hashTable
...
# Gary Gong 发表于2007-06-28 11:18:37 IP: 222.128.6.*
感谢天,感谢地,感谢月儿照耀着大地。
上面六个用过三个,最后一个NameValueCollection没有用过。
建议在实例中添加GetHashCode()方法的介绍
然后有个疑问想问问
很菜鸟的问题
构建Hashtable后,往myHT添加元素
Hashtable myHT = new Hashtable();
myHT.Add("one", "The");
myHT.Add("two", "quick");
myHT.Add("three", "brown");
myHT.Add("four", "fox");
它的key的顺序是one two three fout
为什么贴图中,在打印集合的时候
foreach (string s in myHT.Keys)
Console.WriteLine(s);
顺序变成了
one
three
four
two
是哈希表自动变化的?怎么理解啊?谢谢。
# ProjectDD 发表于2007-06-28 11:34:08 IP: 218.88.73.*
一般都用泛型的集合了,NET默认给的using可以说明这点.
# king_wgj 发表于2007-06-28 11:34:09 IP: 60.191.55.*
不错。学习了。!
# lnzsc 发表于2007-06-28 13:34:53 IP: 222.69.242.*
第一个例子(数组)
int number = (int)al2[i];//一定要强制转换
为什么一定要强制转化呢?
而 foreach里为什么又无需强制转换呢?
月儿你好,你的很多大作我都拜读过,学到很多东西,所以常看你的帖子。
这个帖子很好,我正在逐个学习,发现不需要强制转换也行的。
我用的是c# express 2005。不知道为什么你那里需要强制转换。
# lnzsc 发表于2007-06-28 14:16:09 IP: 222.69.242.*
在SortedList中的代码:
string s = (string)element.Key;
int i = (int)element.Value;
是可以省略的,我的代码是:
Console.WriteLine("{0},{1}", element.Key, element.Value);
不过还是非常感谢月儿。
# weiky626 发表于2007-06-28 14:52:03 IP: 218.18.36.*
充其量是每个集合类举了个例子怎么用,没看到哪个地方有“大比拼”影子,还以为楼主会分析各个集合类的有略呢!楼主的题目有待斟酌
# xbt746 发表于2007-06-28 16:59:32 IP: 58.19.119.*
呵呵,学习一下
# DreamNoYetBecomeTrue 发表于2007-06-28 17:54:00 IP: 121.227.87.*
刚刚接触C#学习中
谢谢LZ
# ericfine 发表于2007-06-29 10:17:22 IP: 205.243.112.*
比了半天没比出优伪来呀 =_= 月儿MM加油
# woaivs 发表于2007-06-29 10:21:09 IP: 218.106.184.*
是女的?很强啊。
# 节能 发表于2007-06-29 12:30:27 IP: 222.212.66.*
很无聊
# cnlcg 发表于2007-06-29 18:07:21 IP: 220.207.140.*
哎,现在对。net的类库还不了解
# cnlcg 发表于2007-06-29 18:18:58 IP: 220.202.74.*
哎,现在对。net的类库还不了解
# xingzhiyun 发表于2007-06-30 23:22:41 IP: 221.204.88.*
都试了,记了笔记,谢谢
# gcgc1225 发表于2007-07-01 18:46:14 IP: 219.141.1.*
学习学习
# netlangzi 发表于2007-07-03 16:57:36 IP: 220.164.63.*
谢谢哦.
清清月儿是女的吗?
# zhrun 发表于2007-07-08 00:02:00 IP: 222.211.220.*
我是常客 学习
# winnerzone 发表于2007-07-11 14:48:14 IP: 219.238.215.*
不知道List算不算一个.
# wangwang008 发表于2007-08-07 08:17:16 IP: 218.25.25.*
学习中。谢谢!我想问一下,你那些代码是放在什么东西里面贴出来的。
# lgg06 发表于2007-08-17 11:38:25 IP: 218.83.157.*
>>数组要声明元素的类型,集合类的元素类型却是object.
kao,什么人啊. 按你的意思把范型费了算了,退一万步,,你自个用object[] 拉倒
大名
网址
校验码:
评论
当前用户设置只有注册用户才能发表评论。如果你没有登录,请点击登录
本文转自
http://blog.csdn.net/21aspnet/archive/2007/06/27/1667862.aspx