C#6-數(shù)組和集合對(duì)象_第1頁
C#6-數(shù)組和集合對(duì)象_第2頁
C#6-數(shù)組和集合對(duì)象_第3頁
C#6-數(shù)組和集合對(duì)象_第4頁
C#6-數(shù)組和集合對(duì)象_第5頁
已閱讀5頁,還剩32頁未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

第六節(jié)數(shù)組和集合對(duì)象目標(biāo)數(shù)組的使用使用System.Array對(duì)象理解集合對(duì)象的特點(diǎn)和優(yōu)點(diǎn)使用System.ArrayList對(duì)象使用哈希表對(duì)象數(shù)組

數(shù)組是一種包含若干變量的數(shù)據(jù)結(jié)構(gòu),這些變量都可以通過計(jì)算索引進(jìn)行訪問。數(shù)組中的數(shù)組的元素具有相同的類型。數(shù)組有一個(gè)“秩”。數(shù)組的秩又稱為數(shù)組的維度?!爸取睘?/p>

1

的數(shù)組稱為一維數(shù)組。“秩”大于

1

的數(shù)組稱為多維數(shù)組。維度大小確定的多維數(shù)組通常稱為兩維數(shù)組、三維數(shù)組等。

聲明數(shù)組

聲明數(shù)組時(shí),方括號(hào)

([])

必須跟在類型后面,而不是標(biāo)識(shí)符后面。在

C#

中,將方括號(hào)放在標(biāo)識(shí)符后是不合法的語法。C#

支持一維數(shù)組、多維數(shù)組(矩形數(shù)組)和數(shù)組的數(shù)組(交錯(cuò)的數(shù)組)。

一維數(shù)組:

int[]

arrayname;

多維數(shù)組:

int[,]

arrayname;

數(shù)組的數(shù)組(交錯(cuò)的):

int[][]

arrayname

;

注意:

聲明數(shù)組并不實(shí)際創(chuàng)建它們。在

C#

中,數(shù)組是對(duì)象,必須進(jìn)行實(shí)例化。

數(shù)組示例using

System;

class

TestArray{

public

static

void

Main()

{

//聲明一個(gè)整型一維數(shù)組的引用,變且在堆中分配連續(xù)5個(gè)整型變量的空間。

int[]

numbers

=

new

int[5];

//

聲明一個(gè)二維字符串?dāng)?shù)組的引用

string[,]

names

=

new

string[5,4];

//

數(shù)組的數(shù)組,相當(dāng)聲明了包含5個(gè)byte型一維數(shù)組的引用變量的一維數(shù)組長度為5

byte[][]

scores

=

new

byte[5][];

//為每個(gè)btye型一維數(shù)組實(shí)例化

for

(int

i

=

0;

i

<

scores.Length;

i++)

{

scores[i]

=

new

byte[i+3];

//非矩形的

}

for

(int

i

=

0;

i

<

scores.Length;

i++)

{

Console.WriteLine("Length

of

row

{0}

is

{1}",

i,

scores[i].Length);

}

}

}

初始化數(shù)組C#

通過將初始值括在大括號(hào)

({})

內(nèi)為在聲明時(shí)初始化數(shù)組提供了簡單而直接了當(dāng)?shù)姆椒?。一維數(shù)組

int[]

numbers

=

new

int[5]

{1,

2,

3,

4,

5};

string[]

names

=

new

string[3]

{"Matt",

"Joanne",

"Robert"};

可省略數(shù)組的大小

int[]

numbers

=

new

int[]

{1,

2,

3,

4,

5};

string[]

names

=

new

string[]

{"Matt",

"Joanne",

"Robert"};

如果提供了初始值設(shè)定項(xiàng),則還可以省略

new

運(yùn)算符

int[]

numbers

=

{1,

2,

3,

4,

5};

string[]

names

=

{"Matt",

"Joanne",

"Robert"};初始化數(shù)組C#

通過將初始值括在大括號(hào)

({})

內(nèi)為在聲明時(shí)初始化數(shù)組提供了簡單而直接了當(dāng)?shù)姆椒?。多維數(shù)組

int[,]

numbers

=

new

int[3,

2]

{

{1,

2},

{3,

4},

{5,

6}

};

string[,]

siblings

=

new

string[2,

2]

{

{"Mike","Amy"},

{"Mary","Albert"}

};

可省略數(shù)組的大小

int[,]

numbers

=

new

int[,]

{

{1,

2},

{3,

4},

{5,

6}

};

string[,]

siblings

=

new

string[,]

{

{"Mike","Amy"},

{"Mary","Albert"}

};

如果提供了初始值設(shè)定項(xiàng),則還可以省略

new

運(yùn)算符int[,]

numbers

=

{

{1,

2},

{3,

4},

{5,

6}

};

string[,]

siblings

=

{

{"Mike",

"Amy"},

{"Mary",

"Albert"}

};初始化數(shù)組C#

通過將初始值括在大括號(hào)

({})

內(nèi)為在聲明時(shí)初始化數(shù)組提供了簡單而直接了當(dāng)?shù)姆椒?。交錯(cuò)的數(shù)組(數(shù)組的數(shù)組)

int[][]

numbers

=

new

int[2][]

{

new

int[]

{2,3,4},

new

int[]

{5,6,7,8,9}

};

可省略第一個(gè)數(shù)組的大小int[][]

numbers

=

new

int[][]

{

new

int[]

{2,3,4},

new

int[]

{5,6,7,8,9}

};

-或-

int[][]

numbers

=

{

new

int[]

{2,3,4},

new

int[]

{5,6,7,8,9}

};

訪問數(shù)組成員訪問數(shù)組成員可以直接進(jìn)行,類似于在

C/C++

中訪問數(shù)組成員。下面的代碼創(chuàng)建一個(gè)名為

numbers

的數(shù)組,然后向該數(shù)組的第五個(gè)元素賦以

5:

int[]

numbers

=

{10,

9,

8,

7,

6,

5,

4,

3,

2,

1,

0};

numbers[4]

=

5;

下面的代碼聲明一個(gè)多維數(shù)組,并向位于

[1,

1]

的成員賦以

5:

int[,]

numbers

=

{

{1,

2},

{3,

4},

{5,

6},

{7,

8},

{9,

10}

};

numbers[1,

1]

=

5;

下面聲明一個(gè)一維交錯(cuò)數(shù)組,它包含兩個(gè)元素。第一個(gè)元素是兩個(gè)整數(shù)的數(shù)組,第二個(gè)元素是三個(gè)整數(shù)的數(shù)組:

int[][]

numbers

=

new

int[][]

{

new

int[]

{1,

2},

new

int[]

{3,

4,

5}};

下面的語句向第一個(gè)數(shù)組的第一個(gè)元素賦以

58,向第二個(gè)數(shù)組的第二個(gè)元素賦以

667:

numbers[0][0]

=

58;

numbers[1][1]

=

667;

對(duì)數(shù)組使用

foreachC#

還提供

foreach

語句。該語句提供一種簡單、明了的方法來循環(huán)訪問數(shù)組的元素。int[]

numbers

=

{4,

5,

6,

1,

2,

3,

-2,

-1,

0};

foreach

(int

i

in

numbers)

{

System.Console.WriteLine(i);

}

對(duì)數(shù)組使用

foreachC#

還提供

foreach

語句。該語句提供一種簡單、明了的方法來循環(huán)訪問數(shù)組的元素。int[,]

numbers

=

new

int[3,

2]

{{9,

99},

{3,

33},

{5,

55}};

foreach(int

i

in

numbers)

{

Console.Write("{0}

",

i);

}

System.Array類

C#

中,數(shù)組實(shí)際上是對(duì)象。System.Array

是所有數(shù)組類型的抽象基類型。System.Array

提供創(chuàng)建、操作、搜索和排序數(shù)組的方法,因而在公共語言運(yùn)行庫中用作所有數(shù)組的基類。所有數(shù)組都可以使用System.Array的屬性和方法。

常用屬性和方法

Length屬性

表示數(shù)組所有維數(shù)中元素的總數(shù)。

int

[]

number={1,2,3,4};

number.Length的值為4;

Rank屬性

表示數(shù)組中的維數(shù)。string[,]

names

=

new

string[5,4];

names.Rank的值為2。

常用屬性和方法

Sort方法

對(duì)一維數(shù)組排序。它是Array類的靜態(tài)方法.

string

[]

name=new

string[]{"xi","ang","zhang","chun"};

Array.Sort(name);

foreach(string

s

in

name)

{

Console.WriteLine(s);

}

Reverse方法

反轉(zhuǎn)一維數(shù)組

Array.Reverse(name);

其值為:chun,zhang,ang,xi

常用屬性和方法

GetLowerBound與GetUpperBound方法

數(shù)組指定維度的下限與上限

int

[,,]

number=new

int[4,3,2]{{{1,2},{2,3},{3,4}},{{4,5},{5,6},{6,7}},{{7,8},{8,9},{9,10}},{{10,11},{11,12},{12,13}}};

for(int

i=number.GetLowerBound(0);i<=number.GetUpperBound(0);i++)

{

for(int

j=number.GetLowerBound(1);j<=number.GetUpperBound(1);j++)

{

for(int

k=number.GetLowerBound(2);k<=number.GetUpperBound(2);k++)

{

Console.WriteLine(“number[{0},{1},{2}]={3}”,i,j,k,number[i,j,k]);

}

}

}

Clear方法

重新初始化數(shù)組中所有的元素

將數(shù)組中的一系列元素設(shè)置為零、false

或空引用.

常用屬性和方法CreateInstance方法創(chuàng)建數(shù)組

Arrayobj=Array.CreateInstance(typeof(string),10);

staticvoidMain(string[]args){

//構(gòu)建objNames數(shù)組

ArrayobjNames=Array.CreateInstance(typeof(string),5);

//初始化值

objNames.SetValue(“A",0);objNames.SetValue(“B",1);objNames.SetValue(“C",2);objNames.SetValue(“D",3);objNames.SetValue(“E",4);Console.WriteLine(“數(shù)組值");

for(intctr=0;ctr<5;ctr++){

Console.WriteLine(“元素{0}:{1}",ctr+1,objNames.GetValue(ctr));

}}

System.Collections簡介System.Collections命名空間包含接口和類,這些接口和類定義各種對(duì)象(如列表、隊(duì)列、位數(shù)組、哈希表和字典)的集合。

哈希表(Hashtable)簡述Hashtable是System.Collections命名空間提供的一個(gè)容器用于處理和表現(xiàn)類似key/value的鍵值對(duì)key通??捎脕砜焖俨檎遥瑫r(shí)key是區(qū)分大小寫;value用于存儲(chǔ)對(duì)應(yīng)于key的值。Hashtable中key/value鍵值對(duì)均為object類型,所以Hashtable可以支持任何類型的key/value鍵值對(duì).

哈希表的簡單操作在哈希表中添加一個(gè)key/value鍵值對(duì): HashtableObject.Add(key,value);

在哈希表中去除某個(gè)key/value鍵值對(duì): HashtableObject.Remove(key);

從哈希表中移除所有元素:

HashtableObject.Clear();

判斷哈希表是否包含特定鍵key:

HashtableObject.Contains(key);

usingSystem;

usingSystem.Collections;//使用Hashtable時(shí),必須引入這個(gè)命名空間

classhashtable

{

publicstaticvoidMain()

{

Hashtableht=newHashtable();//創(chuàng)建一個(gè)Hashtable實(shí)例

ht.Add(“E”,“e”);//添加key/value鍵值對(duì)

ht.Add(“A”,“a”);

ht.Add(“C”,“c”);

ht.Add(“B”,“b”);

strings=(string)ht[“A”];

if(ht.Contains(“E”))//判斷哈希表是否包含特定鍵,其返回值為true或false

Console.WriteLine(“theEkey:exist”);

ht.Remove(“C”);//移除一個(gè)key/value鍵值對(duì)

Console.WriteLine(ht[“A”]);//此處輸出a

ht.Clear();//移除所有元素

Console.WriteLine(ht["A"]);//此處將不會(huì)有任何輸出

}

}

遍歷哈希表

遍歷哈希表需要用到DictionaryEntryObject:

for(DictionaryEntrydeinht)//ht為一個(gè)Hashtable實(shí)例

{

Console.WriteLine(de.Key);//de.Key對(duì)應(yīng)于key/value鍵值對(duì)key

Console.WriteLine(de.Value);//de.Key對(duì)應(yīng)于key/value鍵值對(duì)value

}對(duì)哈希表進(jìn)行排序?qū)1磉M(jìn)行排序在這里的定義是對(duì)key/value鍵值對(duì)中的key按一定規(guī)則重新排列但是實(shí)際上這個(gè)定義是不能實(shí)現(xiàn)的,因?yàn)槲覀儫o法直接在Hashtable進(jìn)行對(duì)key進(jìn)行重新排列如果需要Hashtable提供某種規(guī)則的輸出,可以采用一種變通的做法:

ArrayListakeys=newArrayList(ht.Keys);//別忘了導(dǎo)入System.Collections

akeys.Sort();//按字母順序進(jìn)行排序

for(stringskeyinakeys)

{

Console.Write(skey+":");

Console.WriteLine(ht[skey]);//排序后輸出

}

ArrayList類Array類的容量或元素?cái)?shù)是固定的,而ArrayList類的容量可以根據(jù)需要?jiǎng)討B(tài)擴(kuò)展。通過設(shè)置ArrayList.Capacity的值可以重新分配內(nèi)存和復(fù)制元素使用ArrayList提供的方法可以同時(shí)添加、插入或移除一個(gè)范圍內(nèi)的元素

優(yōu)點(diǎn)

支持自動(dòng)改變大小的功能

可以靈活的插入元素

可以靈活的刪除元素

局限性

跟一般的數(shù)組比起來,速度上差些添加元素

將對(duì)象添加到ArrayList的結(jié)尾處

ArrayListaList=newArrayList();

aList.Add("a");

aList.Add("b");

aList.Add("c");

aList.Add("d");

aList.Add("e");

內(nèi)容為:abcde添加元素

將元素插入ArrayList的指定索引處

ArrayListaList=newArrayList();

aList.Add("a");

aList.Add("b");

aList.Add("c");

aList.Add("d");

aList.Add("e");

aList.Insert(0,"aa");

結(jié)果為:aaabcde添加元素

將集合中的某個(gè)元素插入ArrayList的指定索引處

ArrayListaList=newArrayList();

aList.Add("a");

aList.Add("b");

aList.Add("c");

aList.Add("d");

aList.Add("e");

ArrayListlist2=newArrayList();

list2.Add("tt");

list2.Add("ttt");

aList.InsertRange(2,list2);

結(jié)果為:abtttttcde刪除

從ArrayList中移除特定對(duì)象的第一個(gè)匹配項(xiàng),注意是第一個(gè)

ArrayListaList=newArrayList();

aList.Add("a");

aList.Add("b");

aList.Add("c");

aList.Add("d");

aList.Add("e");

aList.Remove("a");

結(jié)果為:bcde

刪除

移除ArrayList的指定索引處的元素

aList.Add("a");

aList.Add("b");

aList.Add("c");

aList.Add("d");

aList.Add("e");

aList.RemoveAt(0);

結(jié)果為:bcde刪除

從ArrayList中移除一定范圍的元素。Index表示索引,count表示從索引處開始的數(shù)目

aList.Add("a");

aList.Add("b");

aList.Add("c");

aList.Add("d");

aList.Add("e");

aList.RemoveRange(1,3);

結(jié)果為:ae刪除

從ArrayList中移除一定范圍的元素。Index表示索引,count表示從索引處開始的數(shù)目

aList.Add("a");

aList.Add("b");

aList.Add("c");

aList.Add("d");

aList.Add("e");

aList.RemoveRange(1,3);

結(jié)果為:ae從ArrayList中移除所有元素aList.Clear();排序

對(duì)ArrayList或它的一部分中的元素進(jìn)行排序。

ArrayListaList=newArrayList();

aList.Add("e");

aList.Add("a");

aList.Add("b");

aList.Add("c");

aList.Add("d");

DropDownList1.DataSource=aList;//DropDownListDropDownList1;

DropDownList1.DataBind();

結(jié)果為:eabcdaList.Sort();//排序

DropDownList2.DataSource=aList;//DropDownListDropDownList2;

DropDownList2.DataBind();

結(jié)果為:abcde反轉(zhuǎn)

將ArrayList或它的一部分中元素的順序反轉(zhuǎn)。

ArrayListaList=newArrayList();

aList.Add("a");

aList.Add("b");

aList.Add("c");

aList.Add("d");

aList.Add("e");

aList.Reverse();//反轉(zhuǎn)

DropDownList1.DataSource=aList;//DropDownListDropDownList1;

DropDownList1.DataBind();

結(jié)果為:edcba查找

返回ArrayList或它的一部分中某個(gè)值的第一個(gè)匹配項(xiàng)的從零開始的索引。沒找到返回-1。

ArrayListaList=newArrayList();

aList.Add("a");

aList.Add("b");

aList.Add("c");

aList.Add("d");

aList.Add("e");

intnIndex=aList.IndexOf(“a”);//0

nIndex=aList.IndexOf(“p”);//沒找到,-1查找

返回ArrayList或它的一部分中某個(gè)值的最后一個(gè)匹配項(xiàng)的從零開始的索引。

ArrayListaList=newArrayList();

aList.Add("a");

aList.Add("b");

aList.Add("a");//同0

aList.Add("d");

aList.Add("e")

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(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ǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論