版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
C#程序設(shè)計(jì)實(shí)踐教程
C#ProgrammingPractice韓玉民余雨萍主編數(shù)組與集合第7章數(shù)組與集合第7章7.1數(shù)組基本概念7.2一維數(shù)組7.3二維數(shù)組7.4多維數(shù)組7.5Array7.6ArrayList7.1數(shù)組基本概念將一組有序的、個(gè)數(shù)有限的、數(shù)據(jù)類型相同的數(shù)據(jù)組合起來作為一個(gè)整體,用一個(gè)統(tǒng)一的名字(數(shù)組名)來表示,這些有序數(shù)據(jù)的全體則稱為一個(gè)數(shù)組。數(shù)組是具有相同數(shù)據(jù)類型的元素的有序集合。1.什么是數(shù)組在同一個(gè)數(shù)組中,構(gòu)成該數(shù)組的數(shù)據(jù)稱為數(shù)組元素。C#中用一個(gè)統(tǒng)一的名字(數(shù)組名)來表示數(shù)組。如果要訪問數(shù)組中的數(shù)組元素,就需要將數(shù)組名與下標(biāo)(索引)結(jié)合起來?!跋聵?biāo)”就是指數(shù)組元素在該數(shù)組中的索引值,用以標(biāo)明數(shù)組元素在數(shù)組中的位置。在C#中,數(shù)組元素的索引值是從0開始的,即:0,1,2,3,4,5,……。2.數(shù)組元素與下標(biāo)7.1數(shù)組基本概念數(shù)組的類型是指構(gòu)成數(shù)組的元素的數(shù)據(jù)類型(同一數(shù)組的所有數(shù)組元素的數(shù)據(jù)類型必須一致),它可以是任何的基本數(shù)據(jù)類型,如:整型、字符串型、布爾型等;也可以是用戶自定義類型,如結(jié)構(gòu)、枚舉、類類型甚至是控件類型等。3.數(shù)組的類型數(shù)組下標(biāo)(索引)的個(gè)數(shù)稱為數(shù)組的維數(shù),也稱為數(shù)組的秩(rank)。例如一維數(shù)組秩為1,二維數(shù)組秩為2。4.數(shù)組的維數(shù)(秩)7.1數(shù)組基本概念數(shù)組的所有維度中的元素的總和稱為數(shù)組的長度。注意:數(shù)組一旦創(chuàng)建并且初始化,大小就固定了,C#不支持動(dòng)態(tài)數(shù)組。數(shù)組的索引從0開始,n個(gè)元素的數(shù)組索引范圍是從0到n-1。5.數(shù)組的長度7.2一維數(shù)組當(dāng)數(shù)組中每個(gè)元素都只帶有一個(gè)下標(biāo)時(shí),稱這樣的數(shù)組為一維數(shù)組。一維數(shù)組是計(jì)算機(jī)程序中最基本的數(shù)組。二維及多維數(shù)組可以看作是一維數(shù)組的多次疊加產(chǎn)生的。1.定義一維數(shù)組數(shù)據(jù)類型[]數(shù)組名;int[]x;float[]y;string[]z;7.2一維數(shù)組靜態(tài)初始化數(shù)組時(shí),必須與數(shù)組定義結(jié)合在一起,否則會(huì)出錯(cuò)。數(shù)組靜態(tài)初始化語法格式如下:2.一維數(shù)組的靜態(tài)初始化數(shù)據(jù)類型[]數(shù)組變量名={元素值0,元素值1,...,元素值n-1};動(dòng)態(tài)初始化需要借助new運(yùn)算符,為數(shù)組元素分配內(nèi)存空間,并為數(shù)組元素賦初值,數(shù)值類型初始化為0(實(shí)數(shù)為0.0),布爾類型初始化為false,字符串類型初始化為null。3.一維數(shù)組的動(dòng)態(tài)初始化數(shù)組類型[]數(shù)組名=new數(shù)據(jù)類型[n]{元素值0,元素值1,...,元素值n-1};7.2一維數(shù)組如果不給出初始值部分,各元素取默認(rèn)值,例如,以下代碼初始化了兩個(gè)整型數(shù)組。int[]a=newint[5];//以常量作為數(shù)組長度intm=6;//聲明整型變量int[]b=newint[m];//以變量作為數(shù)組長度如果給出初始值部分,各元素取相應(yīng)的初值,而且給出的初值個(gè)數(shù)與“數(shù)組長度”相等,此時(shí)可以省略“數(shù)組長度”,因?yàn)楹竺娴拇罄ㄌ栔幸蚜谐隽藬?shù)組中的全部元素。3.一維數(shù)組的動(dòng)態(tài)初始化int[]a=newint[10]{1,2,3,4,5,6,7,8,9,10};string[]strs=newstring[7]{"AB","B2","C3","Ddef","E12","12F","軟件"};int[]a=newint[]{1,2,3,4,5,6,7,8,9,10};string[]strs=newstring[]{"AB","B2","C3","Ddef","E12","12F","軟件"};7.2一維數(shù)組所有元素下標(biāo)從0開始,到數(shù)組長度減1為止。數(shù)組名稱[下標(biāo)或索引]4.訪問一維數(shù)組元素7.2一維數(shù)組實(shí)例描述:編寫程序,遍歷一維數(shù)組。實(shí)例分析:使用foreach語句遍歷數(shù)組。首先定義并初始化一個(gè)一維數(shù)組,用來存儲(chǔ)學(xué)生姓名,然后遍歷該數(shù)組,依次輸出所有元素。staticvoidMain(string[]args){string[]stuNames=newstring[5]{"Smith","White","Douglas","Jackson","Thompson"};foreach(stringsinstuNames){Console.WriteLine(s);}Console.ReadKey();}【實(shí)例7-1】遍歷學(xué)生姓名一維數(shù)組,輸出所有元素。7.2一維數(shù)組實(shí)例描述:編寫程序,逆序遍歷一維數(shù)組。實(shí)例分析:使用for語句,控制數(shù)組下標(biāo)從最后一個(gè)元素下標(biāo)(n-1)按降序遞減到第一個(gè)元素下標(biāo)(0),逆序遍歷數(shù)組。staticvoidMain(string[]args){string[]stuNames=newstring[5]{"Smith","White","Douglas","Jackson","Thompson"};for(inti=stuNames.Length;i>=0;i--){Console.WriteLine(stuNames[i]);}Console.ReadKey();}【實(shí)例7-2】遍歷學(xué)生姓名一維數(shù)組,逆序輸出所有元素。7.2一維數(shù)組程序運(yùn)行引發(fā)“IndexOutOfRangeException”,即數(shù)組下標(biāo)越界異常。引發(fā)異常的原因,就在for循環(huán)的循環(huán)變量初始值設(shè)置上??疾槿缦麓a:for(inti=stuNames.Length;i>=0;i--)修改代碼如下。for(inti=stuNames.Length-1;i>=0;i--)【實(shí)例7-2】遍歷學(xué)生姓名一維數(shù)組,逆序輸出所有元素。7.3二維數(shù)組二維數(shù)組可以看成是數(shù)組的數(shù)組,它的每一個(gè)元素又是一個(gè)一維數(shù)組。二維數(shù)組需要兩個(gè)下標(biāo)才能確定元素的位置,因此也可以將二維數(shù)組理解為矩陣,兩個(gè)下標(biāo)分別代表元素的行和列。數(shù)據(jù)類型[,]數(shù)組名;1.定義二維數(shù)組數(shù)據(jù)類型[,]數(shù)組名={{元素值0,0,元素值0,1,...,元素值0,n-1},{元素值1,0,元素值1,1,...,元素值1,n-1},...{元素值m-1,0,元素值m-1,1,...,元素值m-1,n-1}};2.二維數(shù)組的靜態(tài)初始化7.3二維數(shù)組數(shù)組類型[,]數(shù)組名=new數(shù)據(jù)類型[m][n]{{元素值0,0,元素值0,1,...,元素值0,n-1},{元素值1,0,元素值1,1,...,元素值1,n-1},...{元素值m-1,0,元素值m-1,1,...,元素值m-1,n-1}};3.二維數(shù)組的動(dòng)態(tài)初始化4.訪問二維數(shù)組元素?cái)?shù)組名稱[行下標(biāo),列下標(biāo)]訪問二維數(shù)組中的某個(gè)元素,需指定數(shù)組名稱和數(shù)組中該元素的行下標(biāo)和列下標(biāo),語法格式為:7.3二維數(shù)組
【實(shí)例7-3】計(jì)算學(xué)生平均成績。實(shí)例描述:假設(shè)每個(gè)學(xué)生有姓名、三門課程(數(shù)學(xué)、語文、英語)的成績,使用一個(gè)一維數(shù)組來存儲(chǔ)學(xué)生姓名。用一個(gè)二維數(shù)組來存儲(chǔ)各學(xué)生的三門課程成績,每一行代表一個(gè)學(xué)生,每一列代表某門課程的分?jǐn)?shù)。編寫程序,求出每個(gè)學(xué)生的平均成績,并輸出。實(shí)例分析:存儲(chǔ)姓名的一維數(shù)組可使用string類型,存儲(chǔ)成績的二維數(shù)組為數(shù)值并需要運(yùn)算平均成績,故采用double類型。為了實(shí)用化,學(xué)生個(gè)數(shù)、姓名和分?jǐn)?shù)均由用戶輸入,先根據(jù)輸入的學(xué)生個(gè)數(shù)定義姓名一維數(shù)組和成績二維數(shù)組,然后依次輸入姓名和分?jǐn)?shù)。輸入結(jié)束后計(jì)算并輸出每個(gè)學(xué)生的平均分。本例關(guān)鍵是姓名一維數(shù)組和成績二維數(shù)組的元素關(guān)聯(lián)對應(yīng)問題,即第i個(gè)姓名一維數(shù)組的元素對應(yīng)第i個(gè)成績二維數(shù)組的元素(三門課程成績)。7.3二維數(shù)組
【實(shí)例7-3】計(jì)算學(xué)生平均成績。staticvoidMain(string[]args){Console.WriteLine("*************學(xué)生平均分計(jì)算程序***********");intstuNum;//學(xué)生個(gè)數(shù)Console.WriteLine("請輸入學(xué)生個(gè)數(shù):");//即二維數(shù)組的行數(shù)stuNum=int.Parse(Console.ReadLine());String[]names=newString[stuNum];//學(xué)生姓名一維數(shù)組Double[,]score=newDouble[stuNum,3];//學(xué)生成績二維數(shù)組Console.WriteLine("***************接收數(shù)據(jù)****************");for(inti=0;i<stuNum;i++){Console.WriteLine("請輸入學(xué)生"+(i+1)+"的姓名:");names[i]=Console.ReadLine();Console.WriteLine("請輸入"+names[i]+"的數(shù)學(xué)成績:");score[i,0]=double.Parse(Console.ReadLine());Console.WriteLine("請輸入"+names[i]+"的語文成績:");score[i,1]=double.Parse(Console.ReadLine());Console.WriteLine("請輸入"+names[i]+"的英語成績:");score[i,2]=double.Parse(Console.ReadLine());Console.WriteLine("***************************************");}Console.WriteLine("***************計(jì)算并顯示結(jié)果************");for(inti=0;i<stuNum;i++){Doubleavg=(score[i,0]+score[i,1]+score[i,2])/3;Console.WriteLine(names[i]+"的平均分為:"+avg);}Console.ReadKey();}7.4多維數(shù)組數(shù)據(jù)類型[,,,…]數(shù)組名=new數(shù)據(jù)類型[該維度數(shù)組的長度,該維度數(shù)組的長度,…];多維數(shù)組通??梢岳斫鉃閿?shù)組的嵌套,即數(shù)組的元素又是一個(gè)數(shù)組,以此迭代下去即稱為多維數(shù)組。二維以上的數(shù)組都可以稱為多維數(shù)組。7.5Array類System.Array是所有數(shù)組類型的抽象基類型。Array類提供了數(shù)組的通用方法,包括創(chuàng)建、元素操作、搜索和排序等,因而在公共語言運(yùn)行庫中用作所有數(shù)組的基類。在C#中,數(shù)組實(shí)際上是System.Array類的對象。如本章前幾節(jié)實(shí)例中定義的各個(gè)數(shù)組,均為Array類的對象。由于Array類是抽象類,不能創(chuàng)建對象,所以該類提供了一些靜態(tài)方法以供調(diào)用。7.5Array類7.5Array類7.5Array類Sort方法有下列三種語法格式,都是按升序排序:(1)Array.Sort(Array1):對整個(gè)一維數(shù)組Array1中的元素進(jìn)行排序。(2)Array.Sort(Array1,Array2):對兩個(gè)一維數(shù)組進(jìn)行關(guān)聯(lián)排序,Array1包含要排序的關(guān)鍵字,Array2包含對應(yīng)的項(xiàng);對Array1中的關(guān)鍵字排序后,Array2中對應(yīng)位置的元素按照Array1中的排序結(jié)果自動(dòng)排序。(3)Array.Sort(Array1,m,n):對一維數(shù)組Array1中起始位置為m的n個(gè)元素進(jìn)行排序。7.5Array類實(shí)例描述:在【實(shí)例7-3】計(jì)算平均成績的基礎(chǔ)上,編寫程序,對求出的平均分降序輸出(從高到低排名),并輸出對應(yīng)的學(xué)生姓名。實(shí)例分析:【實(shí)例7-3】已完成計(jì)算平均成績,本實(shí)例不再給出重復(fù)代碼,假設(shè)每個(gè)學(xué)生的平均成績已計(jì)算出來,并存入一個(gè)一維數(shù)組AVGScore中,則直接使用Array類的Sort方法即可實(shí)現(xiàn)排序。由于Sort方法結(jié)果是升序,需調(diào)用Reverse方法對排序結(jié)果進(jìn)行翻轉(zhuǎn)即可實(shí)現(xiàn)降序排序。這里使用Array.Sort(Array1,Array2)方法實(shí)現(xiàn)姓名一維數(shù)組和平均成績一維數(shù)組的關(guān)聯(lián)排序(以平均成績作為排序關(guān)鍵字),然后分別使用Reverse方法進(jìn)行翻轉(zhuǎn),實(shí)現(xiàn)降序排序,再依次輸出元素值。另一種方法是對兩個(gè)數(shù)組按升序關(guān)聯(lián)排序后,不用Reverse方法進(jìn)行翻轉(zhuǎn),而是從最后一個(gè)元素開始逆向依次輸出直到第一個(gè)元素,亦可實(shí)現(xiàn)按降序排名結(jié)果。
【實(shí)例7-4】計(jì)算學(xué)生平均成績,并按從高到低降序排名。7.5Array類
【實(shí)例7-4】計(jì)算學(xué)生平均成績,并按從高到低降序排名。staticvoidMain(string[]args){//為簡化程序,直接給出初始值
string[]names={"Smith","Thompson","Black"};//定義姓名數(shù)組
int[]AVGScore={85,91,78};//定義平均成績數(shù)組
//以AVGScore為關(guān)鍵字排序,同時(shí)調(diào)整names數(shù)組中對應(yīng)元素的位置
Array.Sort(AVGScore,names);//對兩個(gè)數(shù)組的元素都進(jìn)行翻轉(zhuǎn)
Array.Reverse(AVGScore);Array.Reverse(names);for(inti=0;i<=AVGScore.GetUpperBound(0);i++){Console.WriteLine("姓名:"+names[i]+"\t成績:"+AVGScore[i]);}Console.ReadKey();}7.6ArrayList類ArrayList類位于命名空間System.Collections中,用于建立不定長度的數(shù)組,由于該類數(shù)組的數(shù)據(jù)類型為Object,且長度不固定,可以將其對象看成是一個(gè)集合。集合不同于數(shù)組,是一組可變數(shù)量的元素的組合,這些元素可能共享某些特征。一般來說,這些元素的類型是相同的,但是也可以是具有繼承關(guān)系的不同類的對象,例如控件的集合或某個(gè)類的多個(gè)子集的對象集合等。7.6ArrayList類(1)Array是數(shù)組,其元素個(gè)數(shù)在數(shù)組初始化之后是不能改變的;而ArrayList的容量則可以根據(jù)需要?jiǎng)討B(tài)擴(kuò)展,通過設(shè)置ArrayList.Capacity屬性值可以執(zhí)行重新分配內(nèi)存和復(fù)制元素等操作;(2)ArrayList是具體類,Array是抽象類;(3)獲取數(shù)組的元素?cái)?shù)時(shí)使用Length屬性,而獲取ArrayList集合的元素?cái)?shù)時(shí)使用Count屬性;(4)數(shù)組可以有多維,而ArrayList只能是一維;(5)可以通過ArrayList提供的方法在集合中追加、插入或者移除一組元素,而在Array中一次只能對一個(gè)元素進(jìn)行操作;7.2.1ArrayList簡介7.6ArrayList類定義ArrayList類的對象的語法格式如下:7.6.1ArrayList簡介ArrayList變量名=newArrayList([初始容量]);7.6ArrayList類7.6ArrayList類為ArrayList集合添加元素有下列三種方法:(1)Add()方法:追加單個(gè)元素到ArrayList結(jié)尾處,語法格式如下:ArrayList對象.Add(任何類型的變量或常量);(2)AddRange()方法:追加一個(gè)數(shù)組到ArrayList結(jié)尾處,語法格式如下:ArrayList對象.AddRange(任何類型的數(shù)組變量);(3)Insert()方法:插入一個(gè)元素到指定索引位置,語法格式如下:ArrayList對象.Insert(待插入元素的索引位置,任何類型的常量或變量);7.6.2ArrayList集合添加元素7.6ArrayList類實(shí)例描述:用不同方法向ArrayList集合添加若干數(shù)據(jù),并遍歷集合輸出所有元素。實(shí)例分析:ArrayList集合類位于System.Collections命名空間,故應(yīng)先引用System.Collections命名空間。然后定義并初始化一個(gè)ArrayList集合,并分別調(diào)用上述三種方法添加元素,最后輸出結(jié)果集合。7.6.2ArrayList集合添加元素
【實(shí)例7-5】向ArrayList集合中添加元素。7.6ArrayList類staticvoidMain(string[]args){//定義并初始化一個(gè)字符串?dāng)?shù)組,作為集合的初始值string[]s={"Smith","Jackson","Black"};//用數(shù)組初始化ArrayListArrayLista=newArrayList(s);Console.WriteLine("初始化后的元素為:");printArrayList(a);//輸出ArrayList//單個(gè)追加元素到數(shù)組結(jié)尾處a.Add("White");Console.WriteLine("追加單個(gè)元素后的元素為:");printArrayList(a);//輸出ArrayList//定義并初始化一個(gè)整型數(shù)組int[]x={1,2,3};//追加數(shù)組到ArrayLista.AddRange(x);Console.WriteLine("追加整型數(shù)組后的元素為:");printArrayList(a);//輸出ArrayList//在索引位置為1的位置連續(xù)插入兩個(gè)元素a.Insert(1,4);//插入整型元素a.Insert(1,"Blues");//插入字符串元素Console.WriteLine("插入兩個(gè)元素后的元素為:");printArrayList(a);//輸出ArrayListConsole.ReadKey();}
【實(shí)例7-5】向ArrayList集合中添加元素。///<summary>///定義靜態(tài)方法,輸出參數(shù)ArrayList中的所有元素///</summary>///<paramname="arrayList">待輸出集合</param>staticvoidprintArrayList(ArrayListarrayList){for(inti=0;i<arrayList.Count;i++){Console.Write(arrayList[i]+"\t");}Console.WriteLine();}7.6ArrayList類
【實(shí)例7-5】向ArrayList集合中添加元素。說明:(1)ArrayList與Array的最大區(qū)別就是其元素可以是任意類型,即object類型,因此,語法上來說是可以存儲(chǔ)不同類型的元素的。但是讀者設(shè)計(jì)程序的時(shí)候除了考慮語法正確性,更重要的是語義,也就是說,實(shí)際問題是否需要在一個(gè)集合中存儲(chǔ)多種類型的元素。(2)由于需要多次輸出集合元素,單獨(dú)定義了方法printArrayList,該方法必須定義為靜態(tài)方法,即在方法頭中增加static關(guān)鍵字,因?yàn)橹鞣椒ㄊ庆o態(tài)方法,如果該方法不是靜態(tài)成員,則主方法不能調(diào)用它。7.6ArrayList類在ArrayList集合中,移除指定元素可以使用下列三種方法:(1)Remove()方法:從ArrayList中移除特定對象的第一個(gè)匹配項(xiàng),語法格式為:ArrayList對象.Remove(objectx);其中x為任意類型的變量或常量(2)RemoveAt()方法:從ArrayList集合中移除指定索引位置的元素,語法格式為:ArrayList對象.RemoveAt(index);其中參數(shù)index表示待移除元素所在的索引位置(從0開始編號)。(3)RemoveRange()方法:從ArrayList集合中移除一定范圍的元素,語法格式為:ArrayList對象.RemoveRange(index,count);參數(shù)index表示移除元素所在的待移除元素起始位置索引索引位置,count表示待移除的元素個(gè)數(shù)。7.6.3ArrayList集合移除元素7.6ArrayList類自定義輸出集合元素方法PrintArrayList,代碼如下。7.6.3ArrayList集合移除元素
【實(shí)例7-6】從ArrayList集合中移除元素。///<summary>///定義靜態(tài)方法,輸出參數(shù)ArrayList中的所有元素///</summary>///<paramname="arrayList">待輸出集合</param>staticvoidprintArrayList(ArrayListarrayList){for(inti=0;i<arrayList.Count;i++){Console.Write(arrayList[i]+"\t");}Console.WriteLine();}7.6ArrayList類在Main方法中輸入代碼如下。7.6.3ArrayList集合移除元素
【實(shí)例7-6】從ArrayList集合中移除元素。staticvoidMain(string[]args){//定義一個(gè)字符串?dāng)?shù)組
string[]s={"Smith","Jackson","Black","White","Black","Thompson"};//使用數(shù)組初始化集合變量
ArrayLista=newArrayList(s);Console.WriteLine("初始化后的元素為:");printArrayList(a);a.Remove("Black");Console.WriteLine("移除匹配的第一個(gè)元素后的集合為:");printArrayList(a);a.RemoveAt(3);Console.WriteLine("移除索引為3的元素后的集合為:");printArrayList(a);a.RemoveRange(1,2);Console.WriteLine("移除從索引為1的元素開始的2個(gè)元素后的集合為:");printArrayList(a);Console.ReadKey();}7.6ArrayList類使用Sort()方法,可以對ArrayList集合中的元素進(jìn)行排序。Sort()方法的排序結(jié)果都是正序(升序),如果需要逆序(降序)排序,則可在Sort()后使用Reverse()翻轉(zhuǎn)方法。7.6.4ArrayList集合的排序及反轉(zhuǎn)【實(shí)例7-7】對ArrayList集合元素進(jìn)行排序輸出。實(shí)例描述:對一個(gè)ArrayList集合的元素進(jìn)行排序,并輸出正序和逆序兩種結(jié)果。實(shí)例分析:首先使用一個(gè)字符串?dāng)?shù)組初始化,然后調(diào)用Sort()方法實(shí)現(xiàn)排序,輸出結(jié)果之后再調(diào)用Reverse()方法使集合元素倒序,再次輸出結(jié)果。7.6ArrayList類7.6.4ArrayList集合的排序及反轉(zhuǎn)【實(shí)例7-7】對ArrayList集合元素進(jìn)行排序輸出。自定義方法PrintArrayList代碼如下。///<summary>///定義靜態(tài)方法,輸出參數(shù)ArrayList中的所有元素///</summary>///<paramname="arrayList">待輸出集合</param>staticvoidprintArrayList(ArrayListarrayList){for(inti=0;i<arrayList.Count;i++){Console.Write(arrayList[i]+"\t");}Console.WriteLine();}7.6ArrayList類7.6.4ArrayList集合的排序及反轉(zhuǎn)【實(shí)例7-7】對ArrayList集合元素進(jìn)行排序輸出。在Main方法中輸入代碼如下。staticvoidMain(string[]args){//定義一個(gè)字符串?dāng)?shù)組
string[]s={"Smith","Jackson","Black","White","Black","Thompson"};//使用數(shù)組初始化集合變量
ArrayLista=newArrayList(s);Console.WriteLine("初始化后的元素為:");printArrayList(a);//對集合元素進(jìn)行排序
a.Sort();Console.WriteLine("正序排列的元素為:");printArrayList(a);//反轉(zhuǎn)集合元素順序
a.Reverse();Console.WriteLine("逆序排列的元素為:");printArrayList(a);Console.ReadKey();}7.6ArrayList類7.6.5ArrayList的其它常用方法ArrayList集合對象還有下列幾個(gè)常用方法。(1)IndexOf()方法:返回ArrayList或它的一部分中某個(gè)值的第一個(gè)匹配項(xiàng)的從零開始的索引,如果未查到符合條件的元素對象,則返回-1。(2)LastIndexOf()方法:返回ArrayList或它的一部分中某個(gè)值的最后一個(gè)匹配項(xiàng)的從零開始的索引。(3)Contains()方法:確定某元素是否存在于ArrayList中,返回值為Bool類型。7.6ArrayList類7.6.5ArrayList的其它常用方法實(shí)例描述:在ArrayList集合中查找元素,如果不存在,則給出提示信息,如果存在,則給出具體位置(索引值+1)。實(shí)例分析:首先定義并初始化一個(gè)ArrayList集合,然后分別調(diào)用Indexof()方法和LastIndexOf()方法,給出待查找元素在集合中第一次出現(xiàn)和最后一次出現(xiàn)的位置?!緦?shí)例7-8】查找ArrayList集合中的元素位置。7.6ArrayList類7.6.5ArrayList的其它常用方法【實(shí)例7-8】查找ArrayList集合中的元素位置。staticvoidMain(string[]args){string[]s={"Smith","Jackson","Black","White","Black","Thompson"};//使用數(shù)組初始化集合變量
ArrayLista=newArrayList(s);Console.WriteLine("初始化后的元素為:");printArrayList(a);Console.Write("請輸入你要查找的元素:");strings1=Console.ReadLine();if(a.Contains(search)){Console.WriteLine("元素\""+s1+"\"在集合中第一次出現(xiàn)的位置為:"+(a.IndexOf(s1)+1));Console.WriteLine("元素\""+s1+"\"在集合中最后一次出現(xiàn)的位置為:"+(a.LastIndexOf(s1)+1));}else{Console.WriteLine("集合中不存在元素\""+search+"\"");}Console.ReadKey();}7.7綜合實(shí)例——集合元素綜合操作實(shí)例【實(shí)例7-9】集合元素綜合操作實(shí)例。實(shí)例描述:設(shè)計(jì)一個(gè)控制臺(tái)程序,可以重復(fù)綜合實(shí)現(xiàn)集合類ArrayList的添加、移除及查找元素等常用操作,直到用戶退出集合元素處理程序。實(shí)例分析:首先定義一個(gè)ArrayList集合,依據(jù)用戶輸入對集合元素進(jìn)行初始化。然后給出一個(gè)無限循環(huán),可重復(fù)根據(jù)用戶輸入進(jìn)行集合元素的添加、移除及查找操作。7.7綜合實(shí)例——集合元素綜合操作實(shí)例【實(shí)例7-9】集合元素綜合操作實(shí)例。Collections命名空間引用與自定義的集合元素輸出方法PrintArrayList定義步驟同【實(shí)例7-7】,staticvoidMain(string[]args){strings;//用來存放集合元素ArrayLista=newArrayList();Console.WriteLine("請逐個(gè)輸入ArrayList的初始元素,以#表示初始化結(jié)束:");while((s=Console.ReadLine())!="#")a.Add(s);Console.WriteLine("初始化完成的集合元素為:");printArrayList(a);Console.WriteLine("*************************集合元素操作*************************");7.7綜合實(shí)例——集合元素綜合操作實(shí)例while(true){Console.WriteLine("請選擇要進(jìn)行的操作:1--添加元素\t2--移除元素\t3--查找元素\t0--退出");stringope=Console.ReadLine();if(ope=="1"||ope=="2"||ope=="3"){
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 居民種花活動(dòng)方案策劃(3篇)
- 《GA 1002-2012劇毒化學(xué)品、放射源存放場所治安防范要求》專題研究報(bào)告深度
- 《GA 664-2006公安獎(jiǎng)匾》專題研究報(bào)告
- 養(yǎng)老院志愿者服務(wù)管理制度
- 養(yǎng)老院入住老人糾紛調(diào)解與處理制度
- 養(yǎng)老院個(gè)性化服務(wù)制度
- 2026湖南岳陽市云溪區(qū)人民法院招聘3人備考題庫附答案
- 2026福建漳州市鼓浪嶼故宮文物館招聘6人參考題庫附答案
- 2026自然資源部所屬單位招聘634人參考題庫附答案
- 2026貴州醫(yī)科大學(xué)附屬白云醫(yī)院養(yǎng)老護(hù)理員招聘8人考試備考題庫附答案
- 如何做好一名護(hù)理帶教老師
- 房地產(chǎn)項(xiàng)目回款策略與現(xiàn)金流管理
- 花溪區(qū)高坡苗族鄉(xiāng)國土空間總體規(guī)劃 (2021-2035)
- 非連續(xù)性文本閱讀(中考試題20篇)-2024年中考語文重難點(diǎn)復(fù)習(xí)攻略(解析版)
- 專題13 三角函數(shù)中的最值模型之胡不歸模型(原卷版)
- 門診藥房西藥管理制度
- 新能源汽車生產(chǎn)代工合同
- 2025年中煤科工集團(tuán)重慶研究院有限公司招聘筆試參考題庫含答案解析
- 消防救援預(yù)防職務(wù)犯罪
- 一體化泵站安裝施工方案
- 畜禽糞污資源化利用培訓(xùn)
評論
0/150
提交評論