版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
第六節(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),這些變量都可以通過(guò)計(jì)算索引進(jìn)行訪問(wèn)。數(shù)組中的數(shù)組的元素具有相同的類(lèi)型。數(shù)組有一個(gè)“秩”。數(shù)組的秩又稱為數(shù)組的維度?!爸取睘?/p>
1
的數(shù)組稱為一維數(shù)組?!爸取贝笥?/p>
1
的數(shù)組稱為多維數(shù)組。維度大小確定的多維數(shù)組通常稱為兩維數(shù)組、三維數(shù)組等。
聲明數(shù)組
聲明數(shù)組時(shí),方括號(hào)
([])
必須跟在類(lèi)型后面,而不是標(biāo)識(shí)符后面。在
C#
中,將方括號(hào)放在標(biāo)識(shí)符后是不合法的語(yǔ)法。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ù)組長(zhǎng)度為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#
通過(guò)將初始值括在大括號(hào)
({})
內(nèi)為在聲明時(shí)初始化數(shù)組提供了簡(jiǎn)單而直接了當(dāng)?shù)姆椒āR痪S數(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#
通過(guò)將初始值括在大括號(hào)
({})
內(nèi)為在聲明時(shí)初始化數(shù)組提供了簡(jiǎn)單而直接了當(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#
通過(guò)將初始值括在大括號(hào)
({})
內(nèi)為在聲明時(shí)初始化數(shù)組提供了簡(jiǎn)單而直接了當(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}
};
訪問(wèn)數(shù)組成員訪問(wèn)數(shù)組成員可以直接進(jìn)行,類(lèi)似于在
C/C++
中訪問(wèn)數(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}};
下面的語(yǔ)句向第一個(gè)數(shù)組的第一個(gè)元素賦以
58,向第二個(gè)數(shù)組的第二個(gè)元素賦以
667:
numbers[0][0]
=
58;
numbers[1][1]
=
667;
對(duì)數(shù)組使用
foreachC#
還提供
foreach
語(yǔ)句。該語(yǔ)句提供一種簡(jiǎn)單、明了的方法來(lái)循環(huán)訪問(wè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
語(yǔ)句。該語(yǔ)句提供一種簡(jiǎn)單、明了的方法來(lái)循環(huán)訪問(wè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類(lèi)
在
C#
中,數(shù)組實(shí)際上是對(duì)象。System.Array
是所有數(shù)組類(lèi)型的抽象基類(lèi)型。System.Array
提供創(chuàng)建、操作、搜索和排序數(shù)組的方法,因而在公共語(yǔ)言運(yùn)行庫(kù)中用作所有數(shù)組的基類(lèi)。所有數(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類(lèi)的靜態(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簡(jiǎn)介System.Collections命名空間包含接口和類(lèi),這些接口和類(lèi)定義各種對(duì)象(如列表、隊(duì)列、位數(shù)組、哈希表和字典)的集合。
哈希表(Hashtable)簡(jiǎn)述Hashtable是System.Collections命名空間提供的一個(gè)容器用于處理和表現(xiàn)類(lèi)似key/value的鍵值對(duì)key通??捎脕?lái)快速查找,同時(shí)key是區(qū)分大小寫(xiě);value用于存儲(chǔ)對(duì)應(yīng)于key的值。Hashtable中key/value鍵值對(duì)均為object類(lèi)型,所以Hashtable可以支持任何類(lèi)型的key/value鍵值對(duì).
哈希表的簡(jiǎn)單操作在哈希表中添加一個(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(wú)法直接在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類(lèi)Array類(lèi)的容量或元素?cái)?shù)是固定的,而ArrayList類(lèi)的容量可以根據(jù)需要?jiǎng)討B(tài)擴(kuò)展。通過(guò)設(shè)置ArrayList.Capacity的值可以重新分配內(nèi)存和復(fù)制元素使用ArrayList提供的方法可以同時(shí)添加、插入或移除一個(gè)范圍內(nèi)的元素
優(yōu)點(diǎn)
支持自動(dòng)改變大小的功能
可以靈活的插入元素
可以靈活的刪除元素
局限性
跟一般的數(shù)組比起來(lái),速度上差些添加元素
將對(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表示從索引處開(kāi)始的數(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表示從索引處開(kāi)始的數(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)的從零開(kāi)始的索引。沒(méi)找到返回-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”);//沒(méi)找到,-1查找
返回ArrayList或它的一部分中某個(gè)值的最后一個(gè)匹配項(xiàng)的從零開(kāi)始的索引。
ArrayListaList=newArrayList();
aList.Add("a");
aList.Add("b");
aList.Add("a");//同0
aList.Add("d");
aList.Add("e")
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 基于大數(shù)據(jù)的2025年度冷藏車(chē)調(diào)度管理系統(tǒng)合同2篇
- 長(zhǎng)沙衛(wèi)生職業(yè)學(xué)院《中國(guó)古典文獻(xiàn)學(xué)》2023-2024學(xué)年第一學(xué)期期末試卷
- 2025版智能建筑抹灰分項(xiàng)工程勞務(wù)服務(wù)協(xié)議書(shū)4篇
- 科技助力川菜館實(shí)現(xiàn)可持續(xù)發(fā)展
- 從用戶需求出發(fā)的未來(lái)酒店餐飲空間設(shè)計(jì)策略
- 小學(xué)科學(xué)課程中實(shí)踐活動(dòng)的開(kāi)展與問(wèn)題解決
- 2025版門(mén)樓金屬卷簾門(mén)安裝與維護(hù)服務(wù)合同4篇
- 2025年度高端別墅定制設(shè)計(jì)與建造合同協(xié)議2篇
- 2024鋁質(zhì)板材市場(chǎng)銷(xiāo)售合作協(xié)議2篇
- 父母心理韌性培養(yǎng)家庭教育的關(guān)鍵要素
- 普通高中生物新課程標(biāo)準(zhǔn)
- 茉莉花-附指法鋼琴譜五線譜
- 結(jié)婚函調(diào)報(bào)告表
- SYT 6968-2021 油氣輸送管道工程水平定向鉆穿越設(shè)計(jì)規(guī)范-PDF解密
- 冷庫(kù)制冷負(fù)荷計(jì)算表
- 肩袖損傷護(hù)理查房
- 設(shè)備運(yùn)維管理安全規(guī)范標(biāo)準(zhǔn)
- 辦文辦會(huì)辦事實(shí)務(wù)課件
- 大學(xué)宿舍人際關(guān)系
- 2023光明小升初(語(yǔ)文)試卷
- GB/T 14600-2009電子工業(yè)用氣體氧化亞氮
評(píng)論
0/150
提交評(píng)論