《ASP NET程序設計及實踐》課件04-第4章 數(shù)組與集合_第1頁
《ASP NET程序設計及實踐》課件04-第4章 數(shù)組與集合_第2頁
《ASP NET程序設計及實踐》課件04-第4章 數(shù)組與集合_第3頁
《ASP NET程序設計及實踐》課件04-第4章 數(shù)組與集合_第4頁
《ASP NET程序設計及實踐》課件04-第4章 數(shù)組與集合_第5頁
已閱讀5頁,還剩17頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權,請進行舉報或認領

文檔簡介

-1-掌握C#中數(shù)組的定義掌握Array類的使用了解集合的概念掌握類庫中集合類的使用目標-2-數(shù)組-1數(shù)組是具有相同數(shù)據(jù)類型的項的有序集合數(shù)據(jù)類型[]數(shù)組

名;int[]a; //聲明一個整型數(shù)組a數(shù)組的聲明:例如:數(shù)組的初始化(分配內(nèi)存空間):int[]myArray;//第一種初始化方式myArray=newint[4];//第二種初始化方式int[]myArray=newint[4];//第三種初始化方式int[]myArray=newint[4]{4,7,11,2};//第四種初始化方式int[]myArray=newint[]{4,7,11,2};//第五種初始化方式int[]myArray={4,7,11,2};-3-數(shù)組-2數(shù)組元素的訪問數(shù)組名[索引值]索引值只能為整數(shù),且從0開始,最大值為數(shù)組長度減1

classArrayDemo{ staticvoidMain(string[]args){ int[]myArray=newint[]{4,7,11,2}; intv1=myArray[0];//讀取第一個數(shù)組元素并賦值給v1 intv2=myArray[1];//讀取第二個數(shù)組元素并賦值給v2 myArray[3]=44;//為指定元素賦值;

//通過for循環(huán)打印數(shù)組元素

for(inti=0;i<myArray.Length;i++){ Console.WriteLine(myArray[i]); } }}示例:-4-數(shù)組-3任務描述:定義一個整型數(shù)組,接收10個數(shù),統(tǒng)計偶數(shù)和奇數(shù)的個數(shù)。classArrayTest{ staticvoidMain(string[]args){ int[]ary=newint[10];//定義一個大小為10的數(shù)組

inteven=0;//偶數(shù)個數(shù)

intodd=0;//奇數(shù)個數(shù)

//使用異常處理用戶輸入非數(shù)字時的錯誤提示

try{ //使用for循環(huán)遍歷數(shù)組

for(inti=0;i<ary.Length;i++){ intn=i+1; Console.Write("請輸入第"+n+"個數(shù)字:"); //獲取用戶輸入的數(shù)字,并進行類型轉化

ary[i]=Convert.ToInt32(Console.ReadLine()); } for(inti=0;i<ary.Length;i++){ //如果被2整除則為偶數(shù)

if((ary[i]%2)==0){ even++; }else{ odd++; } } Console.WriteLine("偶數(shù)的個數(shù)為:"+even); Console.WriteLine("奇數(shù)的格式為:"+odd); }catch{ Console.WriteLine("格式錯誤!"); } }}使用ReadLine方法獲取的用戶輸入字符,默認為字符串形式,需要顯示的轉換為int類型,才能進行奇偶數(shù)的運算。-5-Array類-1Array類是公共語言運行庫中所有數(shù)組的基類,提供了創(chuàng)建、操作、搜索和排序數(shù)組的方法。Array類中常用屬性:屬性描述Length返回數(shù)組元素個數(shù),如果需要返回一維中元素個數(shù)可使用GetLength()方法LongLength若數(shù)組包含的元素個數(shù)超過了32位int值的取值范圍,則使用longlength來獲取元素個數(shù)Rank獲取數(shù)組的維數(shù)-6-Array類-2Array類用于數(shù)組的方法:方法名描述ConvertAll靜態(tài)方法,將一種類型的數(shù)組轉換為另一種類型的數(shù)組Copy靜態(tài)方法,將一個Array的一部分元素復制到另一個Array中,并根據(jù)需要執(zhí)行類型強制轉換和裝箱CopyTo將當前一維Array的所有元素復制到指定的一維Array中CreateInstance靜態(tài)方法,初始化Array類的新實例Exists靜態(tài)方法,確定指定數(shù)組包含的元素是否與指定謂詞定義的條件匹配Find靜態(tài)方法,搜索與指定謂詞定義的條件匹配的元素,返回Array中的第一個匹配項FindAll靜態(tài)方法,檢索與指定謂詞定義的條件匹配的所有元素GetLowerBound獲取Array中指定維度的下限GetUpperBound獲取Array的指定維度的上限IndexOf靜態(tài)方法,返回一維Array或部分Array中某個值第一個匹配項的索引LastIndexOf靜態(tài)方法,返回一維Array或部分Array中某個值的最后一個匹配項的索引Resize靜態(tài)方法,將數(shù)組的大小更改為指定的新大小Sort靜態(tài)方法,對一維Array對象中的元素進行排序。-7-Array類-3創(chuàng)建Array數(shù)組:使用Array類的靜態(tài)方法CreateInstance()來創(chuàng)建數(shù)組。示例:classCreateInstanceDemo{ staticvoidMain(string[]args) { //創(chuàng)建一個整型數(shù)組,長度為6 Arraya=Array.CreateInstance(typeof(Int32),6); Console.WriteLine("數(shù)組的維數(shù):"+a.Rank); Console.WriteLine("數(shù)組的長度:"+a.Length); Console.WriteLine("數(shù)組中的初始值:"); foreach(inteina) { Console.Write(e+""); } Console.WriteLine(); //給數(shù)組的第1個元素賦值為10 a.SetValue(10,0); //給數(shù)組的第2個元素賦值為20 a.SetValue(20,1); Console.WriteLine("數(shù)組中的數(shù)據(jù):"); foreach(inteina) { Console.Write(e+""); } Console.WriteLine(); }}通過SetValue()方法指定數(shù)組元素的值-8-Array類-4數(shù)組的復制:值類型數(shù)組:復制所有的值引用類型數(shù)組:不復制對象元素,而只復制對象引用,引用還是引用同一個對象classArrayCopyDemo{ … staticvoidMain(string[]args){ //分別創(chuàng)建并實例化int類型的和Object類型的數(shù)組

int[]myIntArray=newint[5]{1,2,3,4,5}; Object[]myObjArray=newObject[5]{26,27,28,29,30}; //分別輸出兩個數(shù)組的初始值

… //復制int類型數(shù)組中的第1,2兩個值到Object類型數(shù)組中

Array.Copy(myIntArray,myObjArray,2); //分別輸出兩個數(shù)組的值

Console.WriteLine("\n復制int數(shù)組中的1,2兩個值到Object類型數(shù)組后兩個數(shù)組的值,"); Console.Write("int類型數(shù)組的值:"); PrintValues(myIntArray); Console.Write("Object類型數(shù)組的值:"); PrintValues(myObjArray); //復制Object類型數(shù)組中的最后兩個值到int類型數(shù)組中

Array.Copy(myObjArray,myObjArray.GetUpperBound(0)-1, myIntArray,myIntArray.GetUpperBound(0)-1,2); //分別輸出兩個數(shù)組的值

… }}通過Copy()方法復制數(shù)組-9-類庫中的集合-1.NET提供了對堆棧、隊列、列表和哈希表這些數(shù)據(jù)存儲和檢索的專用訪問類,這些類統(tǒng)稱為集合類。集合類特點:集合類定義在System.Collections或System.Collections.Generic命名空間中。大多數(shù)集合類都派生自ICollection、IComparer、IEnumerable、IList、IDictionary和IDictionaryEnumerator接口以及它們的等效泛型接口。使用泛型集合類可以提供更高的類型安全性,在某些情況下還可以提供更好的性能,尤其是在存儲值類型時,這些優(yōu)勢會體現(xiàn)得更明顯。

-10-類庫中的集合-2常用的集合類:ArrayList類Stack類Queue類Hashtable類SortedList類集合類具有一些公共的操作方法:方法說明Clear()從集合中移除所有元素Clone()創(chuàng)建集合的淺表副本Contains()確定某元素是否在集合中CopyTo()將集合或它的一部分復制到一維數(shù)組中ToString

()返回表示當前集合的字符串-11-ArrayList類-1ArrayList類主要用于對數(shù)組中的元素進行處理ArrayList類中常用的方法如下:方法說明Add()將對象添加到ArrayList的結尾處。Insert()將元素插入ArrayList的指定索引處。Remove()從ArrayList中移除特定對象的第一個匹配項。RemoveAt()移除ArrayList的指定索引處的元素。-12-ArrayList類-2示例:classArrayListDemo{ staticvoidMain(string[]args){ ArrayListarr=newArrayList();//實例化一個ArrayList對象

//使用Add方法向ArrayList中添加元素,將元素添加到其末尾

arr.Add("A"); arr.Add("B"); arr.Add("C"); foreach(intninnewint[3]{0,1,2}){ arr.Add(n); } //從ArrayList中移除特定對象的第一個匹配項,注意是第一個

arr.Remove("A"); //移除ArrayList指定索引處的元素

arr.RemoveAt(3); //在指定處添加一個元素

arr.Insert(1,"D"); //遍歷ArrayList,并輸出所有元素

for(inti=0;i<arr.Count;i++){ Console.WriteLine(arr[i].ToString()); } }}通過Remove()移除元素通過Insert()插入元素-13-Stack類-1Stack類也叫做堆棧類,用來實現(xiàn)數(shù)據(jù)結構中的“先進后出”機制。Stack類中常用的方法:方法說明Push()將對象插入Stack的頂部。Pop()移除并返回位于Stack頂部的對象。Peek()返回位于Stack頂部的對象但不將其移除。ToArray()將Stack復制到新數(shù)組中。-14-Stack類-2示例:classStackDemo{ staticvoidMain(string[]args) { //實例化stack類的對象

Stackstack=newStack(); //入棧,使用push方法向stack對象中添加數(shù)據(jù)

for(inti=0;i<6;i++) { stack.Push(i); Console.WriteLine("{0}入棧",i); } //返回棧頂元素

Console.WriteLine("當前棧頂元素為:{0}",stack.Peek().ToString()); //出棧

Console.WriteLine("移出棧頂元素:{0}",stack.Pop().ToString()); //返回棧頂元素

Console.WriteLine("當前棧頂元素為:{0}",stack.Peek().ToString()); //遍歷棧

Console.Write("遍歷棧:"); foreach(intiinstack) { Console.Write(i+""); } Console.WriteLine(); //清空棧

while(stack.Count!=0) { ints=(int)stack.Pop(); Console.WriteLine("{0}出棧",s); } Console.WriteLine("棧中元素個數(shù)為:{0}",stack.Count); }}通過Push()方法進行壓棧操作通過Peek()方法獲取棧頂元素通過Pop()方法進行移棧操作-15-Queue類-1隊列的操作是“先進先出”的模式。在C#中提供了Queue類來實現(xiàn)隊列的操作。Queue類中常用的方法及說明:方法說明Enqueue()將對象添加到Queue的結尾處。Dequeue()移除并返回位于Queue開始處的對象。Peek()返回位于Queue開始處的對象但不將其移除。ToArray()將Queue元素復制到新數(shù)組。-16-Queue類-2示例:classQueueDemo{ staticvoidMain(string[]args) { //實例化Queue類的對象

Queuequeue=newQueue(); //入隊,使用Enqueue方法行Queue對象中添加元素

for(inti=1;i<6;i++) { queue.Enqueue(i); Console.WriteLine("{0}入隊",i); } //返回隊開始處的元素

Console.WriteLine("當前隊開始處元素為:{0}",queue.Peek().ToString()); //遍歷隊列

Console.Write("遍歷隊列:"); foreach(intiinqueue) { Console.Write(i+""); } Console.WriteLine(); //清空隊

while(queue.Count!=0) { intq=(int)queue.Dequeue(); Console.WriteLine("{0}出隊",q); } Console.WriteLine("隊列中元素的個數(shù)為:{0}",queue.Count); }}通過Enqueue()方法實現(xiàn)入隊操作通過Peek()方法獲取最先進入隊列中的元素-17-Hashtable類-1Hashtable類也叫做哈希表類,它是由一組鍵(Key)/值(Value)對集合組成。Hashtable類中常用的方法及說明:

方法說明Add()將帶有指定鍵和值的元素添加到Hashtable中Remove()從Hashtable中移除帶有指定鍵的元素ContainsKey()確定Hashtable是否包含特定鍵ContainsValue()確定Hashtable是否包含特定值-18-Hashtable類-2示例:classHashtableDemo{ staticvoidMain(string[]args){ //實例化Hashtable對象

HashtablestuHashTable=newHashtable(); //向Hashtable中添加元素

stuHashTable.Add("01","趙"); stuHashTable.Add("02","錢"); stuHashTable.Add("03","孫"); stuHashTable.Add("04","李"); //遍歷Hashtable foreach(DictionaryEntryelementinstuHashTable){ stringid=element.Key.ToString(); stringname=element.Value.ToString(); Console.WriteLine("學生的ID:{0}學生的姓氏:{1}",id,name); } //移除Hashtable中的元素

stuHashTable.Remove("03"); }}通過Add()方法實現(xiàn)元素插入操作通過Remove()方法實現(xiàn)元素移除操作-19-SortedList類-1SortedList類與Hashtable類相類似,每個數(shù)據(jù)也是由鍵/值對組成。它們之間的區(qū)別在于,SortedList類中的這些鍵/值對是按鍵來排序的,并且可以按照鍵和索引進行訪問。下表中列出了SortedList類中常用的方法及說明。方法說明Add()將帶有指定鍵和值的元素添加到SortedList中Remove()從SortedList中移除帶有指定鍵的元素RemoveAt()移除SortedList指定索引處的元素ContainsKey()確定SortedList是否包含特定鍵ContainsValue()確定SortedList是否包含特定值-20-SortedList類-2示例:classSortedListDemo{ staticvoidMain(string[]args){ //實例化Sorted

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經(jīng)權益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
  • 6. 下載文件中如有侵權或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論