版權(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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2024年度企業(yè)員工績效評(píng)估與薪酬調(diào)整合作合同3篇
- 2024年企事業(yè)單位綠植擺放與養(yǎng)護(hù)管理服務(wù)合同3篇
- 2024年某餐飲企業(yè)與食材供應(yīng)商之間的食材采購合同
- 2024年幕墻腳手架施工分包質(zhì)量檢測(cè)及整改合同3篇
- 2024年度淘寶電商團(tuán)隊(duì)管理與領(lǐng)導(dǎo)力培訓(xùn)服務(wù)協(xié)議3篇
- 2024年商鋪?zhàn)赓U合同模板:市中心黃金地段商鋪?zhàn)赓U管理規(guī)范2篇
- 建筑物拆除爆破工程合約
- 食品加工攪拌機(jī)租賃合同
- 企業(yè)員工績效承諾書樣版
- 企業(yè)用工信息化管理策略
- 大學(xué)生職業(yè)規(guī)劃課件
- 2024年食品生產(chǎn)企業(yè)食品安全管理人員監(jiān)督抽查考試題庫(含答案)
- 中醫(yī)與診斷-學(xué)做自己的醫(yī)生智慧樹知到期末考試答案2024年
- 軍事理論智慧樹知到期末考試答案2024年
- 2024年貴州貴安發(fā)展集團(tuán)有限公司招聘筆試參考題庫附帶答案詳解
- 2024年貴州燃?xì)饧瘓F(tuán)貴安新區(qū)燃?xì)庥邢薰菊衅腹P試參考題庫附帶答案詳解
- 中醫(yī)診療設(shè)備種類目錄
- 人教版小學(xué)數(shù)學(xué)三上《數(shù)學(xué)廣角-集合》單元集體備課及全部課時(shí)教學(xué)設(shè)計(jì)
- 《高考工藝流程題》教案及反思陳慧
- 中藥材生產(chǎn)管理質(zhì)量管理文件目錄
- 鄉(xiāng)鎮(zhèn)殯葬整治工作開展情況匯報(bào)
評(píng)論
0/150
提交評(píng)論