C#数据集合.docx

上传人:b****5 文档编号:8387078 上传时间:2023-01-31 格式:DOCX 页数:9 大小:49.98KB
下载 相关 举报
C#数据集合.docx_第1页
第1页 / 共9页
C#数据集合.docx_第2页
第2页 / 共9页
C#数据集合.docx_第3页
第3页 / 共9页
C#数据集合.docx_第4页
第4页 / 共9页
C#数据集合.docx_第5页
第5页 / 共9页
点击查看更多>>
下载资源
资源描述

C#数据集合.docx

《C#数据集合.docx》由会员分享,可在线阅读,更多相关《C#数据集合.docx(9页珍藏版)》请在冰豆网上搜索。

C#数据集合.docx

C#数据集合

】一、先来说说数组的不足(也可以说集合与数组的区别)

1.数组是固定大小的,不能伸缩。

虽然System.Array.Resize这个泛型方法可以重置数组大小,但是该方法是重新创建新设置大小的数组,用的是旧数组的元素初始化。

随后以前的数组就废弃!

而集合却是可变长的。

2.数组要声明元素的类型,集合类的元素类型却是object。

3.数组可读可写不能声明只读数组。

集合类可以提供ReadOnly方法以只读方式使用集合。

4.数组要有整数下标才能访问特定的元素,然而很多时候这样的下标并不是很有用。

集合也是数据列表却不使用下标访问。

很多时候集合有定制的下标类型,对于队列和栈根本就不支持下标访问!

二、下面讲述6种常用集合

1.ArrayList类

usingSystem;

usingSystem.Collections.Generic;

usingSystem.Text;

usingSystem.Collections;

namespaceConsoleApplication1

...{

   classProgram

   ...{

       staticvoidMain(string[]args)

       ...{

           ArrayListal=newArrayList();

           al.Add(100);//单个添加

           foreach(intnumberinnewint[6]...{9,3,7,2,4,8})

           ...{

               al.Add(number);//集体添加方法一

           }

           int[]number2=newint[2]...{11,12};

           al.AddRange(number2);//集体添加方法二

           al.Remove(3);//移除值为3的

           al.RemoveAt(3);//移除第3个

           ArrayListal2=newArrayList(al.GetRange(1,3));

//新ArrayList只取旧ArrayList一部份

           Console.WriteLine("遍历方法一:

");

           foreach(intiinal)//不要强制转换

           ...{

               Console.WriteLine(i);//遍历方法一

           }

           Console.WriteLine("遍历方法二:

");

           for(inti=0;i!

=al2.Count;i++)//数组是length

           ...{

               intnumber=(int)al2[i];//一定要强制转换

               Console.WriteLine(number);//遍历方法二

           }

       }

   }

}

图1

2.Stack类

栈,后进先出。

push方法入栈,pop方法出栈。

usingSystem;

usingSystem.Collections.Generic;

usingSystem.Text;

usingSystem.Collections;

namespaceConsoleApplication1

...{

   classProgram

   ...{

       staticvoidMain(string[]args)

       ...{

           Stacksk=newStack();

           Stacksk2=newStack();

           foreach(intiinnewint[4]...{1,2,3,4})

           ...{

               sk.Push(i);//填充

               sk2.Push(i);

           }

           

           foreach(intiinsk)

           ...{

               Console.WriteLine(i);//遍历

           }

           sk.Pop();

           Console.WriteLine("Pop");

           foreach(intiinsk)

           ...{

               Console.WriteLine(i);

           }

           

           sk2.Peek();//弹出最后一项不删除

           Console.WriteLine("Peek");

           foreach(intiinsk2)

           ...{

               Console.WriteLine(i);

           }

           while(sk2.Count!

=0)

           ...{

               inti=(int)sk2.Pop();//清空

               sk2.Pop();//清空

           }

           Console.WriteLine("清空");

           foreach(intiinsk2)

           ...{

               Console.WriteLine(i);

           }

       }

   }

}

图2

#p#

3.Queue类

队列,先进先出。

enqueue方法入队列,dequeue方法出队列。

usingSystem;

usingSystem.Collections.Generic;

usingSystem.Text;

usingSystem.Collections;

namespaceConsoleApplication1

...{

   classProgram

   ...{

       staticvoidMain(string[]args)

       ...{

           Queuequ=newQueue();

           Queuequ2=newQueue();

           foreach(intiinnewint[4]...{1,2,3,4})

           ...{

               qu.Enqueue(i);//填充

               qu2.Enqueue(i);

           }

           

           foreach(intiinqu)

           ...{

               Console.WriteLine(i);//遍历

           }

           qu.Dequeue();

           Console.WriteLine("Dequeue");

           foreach(intiinqu)

           ...{

               Console.WriteLine(i);

           }

           

           qu2.Peek();//弹出最后一项不删除

           Console.WriteLine("Peek");

           foreach(intiinqu2)

           ...{

               Console.WriteLine(i);

           }

           while(qu2.Count!

=0)

           ...{

               inti=(int)qu2.Dequeue();//清空

               qu2.Dequeue();//清空

           }

           Console.WriteLine("清空");

           foreach(intiinqu2)

           ...{

               Console.WriteLine(i);

           }

       }

   }

}

图3

4.Hashtable类

哈希表,名-值对。

类似于字典(比数组更强大)。

哈希表是经过优化的,访问下标的对象先散列过。

如果以任意类型键值访问其中元素会快于其他集合。

GetHashCode()方法返回一个int型数据,使用这个键的值生成该int型数据。

哈希表获取这个值最后返回一个索引,表示带有给定散列的数据项在字典中存储的位置。

usingSystem;

usingSystem.Collections.Generic;

usingSystem.Text;

usingSystem.Collections;

namespaceConsoleApplication1

...{

   classProgram

   ...{

       publicstaticvoidMain()

       ...{

           //CreatesandinitializesanewHashtable.

           HashtablemyHT=newHashtable();

           myHT.Add("one","The");

           myHT.Add("two","quick");

           myHT.Add("three","brown");

           myHT.Add("four","fox");

           //DisplaystheHashtable.

           Console.WriteLine("TheHashtablecontainsthefollowing:

");

           PrintKeysAndValues(myHT);

       }

       publicstaticvoidPrintKeysAndValues(HashtablemyHT)

       ...{

           foreach(stringsinmyHT.Keys)

               Console.WriteLine(s);

           Console.WriteLine("-KEY--VALUE-");

           foreach(DictionaryEntrydeinmyHT)

               Console.WriteLine("{0}:

{1}",de.Key,de.Value);

           Console.WriteLine();

       }

   }

}

图4

#p#

5.SortedList类

与哈希表类似,区别在于SortedList中的Key数组排好序的。

usingSystem;

usingSystem.Collections.Generic;

usingSystem.Text;

usingSystem.Collections;

namespaceConsoleApplication1

...{

   classProgram

   ...{

       publicstaticvoidMain()

       ...{

           SortedListsl=newSortedList();

           sl["c"]=41;

           sl["a"]=42;

           sl["d"]=11;

           sl["b"]=13;

           foreach(DictionaryEntryelementinsl)

           ...{

               strings=(string)element.Key;

               inti=(int)element.Value;

               Console.WriteLine("{0},{1}",s,i);

           }

       }

   }

}

图5

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则不唯一!

usingSystem;

usingSystem.Collections.Generic;

usingSystem.Collections;

usingSystem.Collections.Specialized;

namespaceConsoleApplication1

...{

   classProgram

   ...{

       staticvoidMain(string[]args)

       ...{

           System.Collections.Hashtableht=newSystem.Collections.Hashtable();

           ht.Add("DdpMDisplaySeq".Trim(),"DisplaySequence".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(),"MarketCode".Trim());

           foreach(objectkeyinht.Keys)

           ...{

               Console.WriteLine("{0}/{1}{2},{3}",key,ht[key],

key.GetHashCode(),ht[key].GetHashCode());

           }

           Console.WriteLine("");

           NameValueCollectionmyCol=newNameValueCollection();

           myCol.Add("DdpMDisplaySeq".Trim(),"DisplaySequence".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(),"MarketCode".Trim());

           foreach(stringkeyinmyCol.Keys)

           ...{

               Console.WriteLine("{0}/{1}{2},{3}",key,myCol[key],

key.GetHashCode(),myCol[key].GetHashCode());

           }

       }

   }

}

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 党团工作 > 其它

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1