第4章+數組與集合-2(課件)-《算法與程序設計-C#》同步教學(清華大學版)_第1頁
第4章+數組與集合-2(課件)-《算法與程序設計-C#》同步教學(清華大學版)_第2頁
第4章+數組與集合-2(課件)-《算法與程序設計-C#》同步教學(清華大學版)_第3頁
第4章+數組與集合-2(課件)-《算法與程序設計-C#》同步教學(清華大學版)_第4頁
第4章+數組與集合-2(課件)-《算法與程序設計-C#》同步教學(清華大學版)_第5頁
已閱讀5頁,還剩21頁未讀, 繼續免費閱讀

下載本文檔

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

文檔簡介

C#程序設計

第4章

數組與集合2集合Array類ArrayList★掌握Array類的使用及操作掌握ArrayList的使用及操作3Array類C#中的數組繼承自System.ArrayArray類是抽象類。不能使用構造函數來創建數組用靜態方法CreateInstance()創建數組staticArrayCreateInstance(TypeelementType,intlength);用SetValue(objectvalue,intindex)方法設置值。objectGetValue(int

index)索引值ArrayintArray1=Array.CreateInstance(typeof(int),5);for(inti=0;i<5;i++){intArray1.SetValue(33,i);}for(inti=0;i<5;i++){Console.WriteLine(intArray1.GetValue(i));}4Array類用靜態方法CreateInstance()創建數組publicstaticArrayCreateInstance

(TypeelementType,int[]lengths,int[]lowerBounds);用SetValue(objectvalue,intindex)方法設置值。lowerBounds:創建具有指定下限lengths:維長5Array類獲得數組指定維的上下限intGetUpperBound(intdimension):上限intGetLowerBound(intdimension):下限獲得指定維的元素個數intGetLength(intdimension)6Array類Clone()創建數組的副本數組的元素是值類型,就會為數組分配內存,復制所有的值7Array類Clone()創建數組的副本數組的元素引用類型,則不復制元素,而只復制引用8Array的方法Array.BinarySearch(數組名,key);二分查找Array.Copy(源數組名,目標數組名,長度N)將源數組從第一個元素開始的N個元素復制給目標數組數組名.CopyTo(目標數組,指定起始下標)將一維數組所有元素復制到一維目標數組指定的起始下標開始的位置Array.Sort(數組名)Array.Reverse(數組名)Array.Reverse(數組名,下標,長度) 9Array的方法IndexOf(數組名,要查找的值)

返回指定值第一次出現的索引值數組名.SetValue(值,下標)給數組元素賦值數組名.GetValue(下標)讀取數組元素的值Array.Copy(源數組名,目標數組名,長度N)將源數組從第一個元素開始的N個元素復制給目標數組數組名.CopyTo(目標數組,指定起始下標)將一維數組所有元素復制到一維目標數組指定的起始下標開始的位置10Array的方法數組名.Length 屬性。獲得數組所有維數中元素的總數Array.Reverse(數組名)Array.Reverse(數組名,下標,長度) 反轉一維數組全部元素或從下標開始的指定長度的元素數組名.Rank返回數組的維數數組名.GetLowerBound(維數)返回數組指定維數的下限對于一維和多維數組11intscore1;System.Console.ReadLine(score1)intscore2;System.Console.ReadLine(score2)intscore3;System.Console.ReadLine(score3)intscore4;System.Console.ReadLine(score4)intscore5;System.Console.ReadLine(score5)intscore6;System.Console.ReadLine(score6)intscore7;System.Console.ReadLine(score7)第七位學生的分數第六位學生的分數第五位學生的分數第四位學生的分數第三位學生的分數第二位學生的分數第一位學生的分數score[6]score[5]score[4]score[3]score[1]score[0]score[2]數組應用程序數組存儲學員的分數intscore[]=newint[7];6754321在數組的術語中,元素表示數組中存儲的值,數組長度指數組中存儲的值的總數,數組秩指數組的總維數12System.Collections簡介ID工作檔案ID工作檔案ID工作檔案ID工作檔案職員1職員2職員3職員4Employee對象的集合對象組中元素個數未知,并且隨時可能要循環、添加和移除System.Collections13System.Collections簡介2-2System.Collection命名空間類接口結構實現了ICollection接口和IEnumerator接口Count屬性,返回集合元素數量CopyTo(Arrayarray,intindex)可以使用foreach遍歷14ArrayList是一個可動態維護長度的集合count:

實際元素個數capacity:

集合的容量,按2的冪次擴充??删S護動態長度的集合新增元素可刪除元素可訪問單個元素objectobjectobjectobject0123索引(下標)object40123ArrayList自動調整索引通過索引訪問15ArrayList的初始化usingSystem.Collections;…ArrayListlist1=newArrayList();ArrayListTeachers=newArrayList(5)ArrayListOthers=newArrayList(otherCollection);可以指定長度引入命名空間默認構造方法ArrayList只能是一維形式,數組可以是多維的引入System.Collections命名空間實例化ArrayList對象從其它集合創建16ArrayList添加元素intAdd(Objectvalue)//添加一個對象到集合的末尾返回索引可為null返回索引可為nullcount屬性獲取集合實際元素數目capacity獲取集合的容量也可以是:list1.add(1)集合中的元素可以是任何類型17ArrayList添加元素集合在沒有添加元素前,count屬性為0list2.add(10);list2.add(9);此時capacity是:20×18訪問ArrayList元素(類型)ArrayList[index]//按指定索引(下標)取得對象stringstr1=(string)list1[0];Console.WriteLine(str1);…按索引取值轉換為string對象ArrayList第一個對象的索引是0需要類型轉換19ArrayList的遍歷//遍歷foreach(objectobjinlist1){stringstr=(string)obj;Console.Write("{0}\n",str);}通過對象遍歷打印對象的Name屬性可以使用和數組類似的方式for(inti=0;i<list1.Count;i++){stringstr=(string)list1[i];Console.Write("{0}\n",str);}foreach方式輸出結果類型轉換20刪除ArrayList的元素ArrayList.Remove(對象名)//刪除指定對象名的對象ArrayList.RemoveAt(index)//刪除指定索引的對象ArrayList.Clear()//清除集合內的所有元素ArrayList.RemoveRange(intindex,intcount)//將集合從指定索引處開始的count個元素刪除list1.RemoveAt(1);list1.Remove(“tom”);stringstrdel=(string)list1[0];Console.WriteLine(strdel);通過索引刪除對象通過指定對象刪除只剩一個對象剩余的元素會自動調整索引取得刪除后的第一個對象21常見錯誤1//…list1.Add(“zhangsan”);list1.Add(“lisi”);list1.Add(“wangwu”);list1.RemoveAt(0);list1.RemoveAt(1);list1.RemoveAt(2);運行這段代碼會發生錯誤?索引會自動調整刪除兩個元素后,不再有索引“2“22常見錯誤2Studentzhangsan=newStudent("張三",20);…Studentzhangsan2=newStudent("張三",20);//打印集合的元素…list1.Remove(zhangsan2

);//打印集合的元素…如果Remove(zhangsan2

),能否刪除zhangsan對象?定義一個對象與前面的值相同兩次的結果都一致,沒有刪除,為什么?演示:MySchool

此例集合中存放的元素是類的對象(存放的是引用,而不是具體值)23課堂討論集合中的元素應該如何正確地刪除?-采用循環刪除,從集合的后面開始刪除-采用循環刪除,固定集合元素個數,然后不停刪除0號元素24循環刪除元素intN=list1.Count;for(inti=1;i<=N;i++)list1.RemoveAt(0);for(inti=list1.Count-1;i>=0;i--)list1.RemoveAt(i);每次刪除第一個元素每次刪除最后一個元素25ArrayList的插入和查找Insert(intindex,objectvalue)boolContains(objectitem)在ArrayList中查找item,找到為true,找不到為false.intInde

溫馨提示

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

評論

0/150

提交評論