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

下載本文檔

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

文檔簡介

-1-掌握C#中數(shù)組的定義掌握Array類的使用了解集合的概念掌握類庫中集合類的使用目標(biāo)-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任務(wù)描述:定義一個整型數(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ù)字,并進行類型轉(zhuǎn)化

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方法獲取的用戶輸入字符,默認(rèn)為字符串形式,需要顯示的轉(zhuǎn)換為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ù)組轉(zhuǎn)換為另一種類型的數(shù)組Copy靜態(tài)方法,將一個Array的一部分元素復(fù)制到另一個Array中,并根據(jù)需要執(zhí)行類型強制轉(zhuǎn)換和裝箱CopyTo將當(dāng)前一維Array的所有元素復(fù)制到指定的一維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ù)組的復(fù)制:值類型數(shù)組:復(fù)制所有的值引用類型數(shù)組:不復(fù)制對象元素,而只復(fù)制對象引用,引用還是引用同一個對象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ù)組的初始值

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

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

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

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

… }}通過Copy()方法復(fù)制數(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()將集合或它的一部分復(fù)制到一維數(shù)組中ToString

()返回表示當(dāng)前集合的字符串-11-ArrayList類-1ArrayList類主要用于對數(shù)組中的元素進行處理ArrayList類中常用的方法如下:方法說明Add()將對象添加到ArrayList的結(jié)尾處。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ù)結(jié)構(gòu)中的“先進后出”機制。Stack類中常用的方法:方法說明Push()將對象插入Stack的頂部。Pop()移除并返回位于Stack頂部的對象。Peek()返回位于Stack頂部的對象但不將其移除。ToArray()將Stack復(fù)制到新數(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("當(dāng)前棧頂元素為:{0}",stack.Peek().ToString()); //出棧

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

Console.WriteLine("當(dāng)前棧頂元素為:{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的結(jié)尾處。Dequeue()移除并返回位于Queue開始處的對象。Peek()返回位于Queue開始處的對象但不將其移除。ToArray()將Queue元素復(fù)制到新數(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("當(dāng)前隊開始處元素為:{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("學(xué)生的ID:{0}學(xué)生的姓氏:{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)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論