一区二区三区在线-一区二区三区亚洲视频-一区二区三区亚洲-一区二区三区午夜-一区二区三区四区在线视频-一区二区三区四区在线免费观看

服務(wù)器之家:專(zhuān)注于服務(wù)器技術(shù)及軟件下載分享
分類(lèi)導(dǎo)航

PHP教程|ASP.NET教程|Java教程|ASP教程|編程技術(shù)|正則表達(dá)式|C/C++|IOS|C#|Swift|Android|VB|R語(yǔ)言|JavaScript|易語(yǔ)言|vb.net|

服務(wù)器之家 - 編程語(yǔ)言 - ASP.NET教程 - 集合類(lèi)Array List HashTable實(shí)例操作練習(xí)

集合類(lèi)Array List HashTable實(shí)例操作練習(xí)

2019-10-26 14:00asp.net技術(shù)網(wǎng) ASP.NET教程

集合常用操作添加、遍歷、移除;本文將詳細(xì)介紹下ArrayList對(duì)值類(lèi)型的操作/ArrayList對(duì)引用類(lèi)型的操作及HashTable的使用,感興趣的你可不要錯(cuò)過(guò)了哈

集合常用操作添加、遍歷、移除 
命名空間System.Collections 

ArrayList 可變長(zhǎng)度數(shù)組,使用類(lèi)似于數(shù)組 
屬性 Capacity Count 
方法 
Add() AddRange() Remove() RemoveAt() Clear() 
Contains() ToArray() 
Hashtable 鍵值對(duì)(KeyValuePair)的集合,類(lèi)似于字典 

a、ArrayList對(duì)值類(lèi)型的操作 

復(fù)制代碼代碼如下:


using System; 
using System.Collections; 
namespace _08_ArrayList { 
//ArayList對(duì)值類(lèi)型的操作 
class Program { 
static void Main( string[] args) { 
//ArrayList與數(shù)組沒(méi)多大的區(qū)別 優(yōu)點(diǎn)在于不像數(shù)組需規(guī)定長(zhǎng)度 缺點(diǎn)是數(shù)據(jù)類(lèi)型不限制 什么類(lèi)型數(shù)據(jù)都可以放入 這樣會(huì)出現(xiàn)許多錯(cuò)誤 
ArrayList arylist = new ArrayList(); 
//ArrayList添加 
arylist.Add(1000); 
//arylist.Add("張三");//參數(shù)類(lèi)型為object 所以可以添加多種類(lèi)型的參數(shù) 取出時(shí)同樣需要類(lèi)型轉(zhuǎn)換 
arylist.Add(3000); 
arylist.Add(4000); //發(fā)生裝箱操作 將值類(lèi)型轉(zhuǎn)換引用類(lèi)型 
arylist.Add(5000); 
int [] arr = { 1, 2, 3, 4 }; 
arylist.AddRange(arr); //AddRange參數(shù)是實(shí)現(xiàn)了ICollections接口的對(duì)象 可以一次性添加數(shù)組、array、ArrayList等實(shí)現(xiàn)接口的對(duì)象 
//集合中元素個(gè)數(shù) 使用Count = 數(shù)組Length 
Console .WriteLine("集合內(nèi)容長(zhǎng)度" + arylist.Count); 
//Capacity為集合的容量 是可變的 一般*2增長(zhǎng) 
Console .WriteLine(arylist.Capacity); 
//訪(fǎng)問(wèn)集合第一個(gè)元素 
int firstlist = Convert .ToInt32(arylist[0]); 
Console .WriteLine(firstlist.ToString()); 
//ArrayList遍歷 
int sum2 = 0; 
for (int i = 0; i < arylist.Count; i++) { 
//sum2 += Convert.ToInt32(arylist[i]);//發(fā)生拆箱操作 
Console .WriteLine(arylist[i].ToString()); 

foreach (object item in arylist) { 
sum2 += Convert .ToInt32(item); 

Console .WriteLine(sum2); 
//ArrayList移除 只是移除 不是刪除 
arylist.Remove(1000); //移除內(nèi)容是1000的 Remove移除內(nèi)部的某個(gè)對(duì)象 
arylist.RemoveAt(1); //移除第二項(xiàng) 按索引移除 
//注意 移除元素 ArrayList數(shù)組會(huì)重新分配索引 所以移除操作最好是倒敘移除元素 
//如果移除所有的元素 直接使用Clear 
//arylist.Clear(); 
if (arylist.Contains(3000)) { 
Console .WriteLine("包含" ); 

//ArrayList還有ToArray()但是意義不大 
//這里是在A(yíng)rrayList中添加值類(lèi)型 那么引用類(lèi)型呢????添加Student類(lèi)的對(duì)象? 
Console .Read(); 



b、ArrayList對(duì)引用類(lèi)型的操作 

復(fù)制代碼代碼如下:


using System; 
using System.Collections; 
namespace _09_ArrayListObject { 
//ArrayList對(duì)引用類(lèi)型的操作 
class Student { 
public Student(string name, int age) { 
this .name = name; 
this .age = age; 

private string name; 
public string Name { 
get { 
return name; 

set { 
name = value ; 


private int age; 
public int Age { 
get { 
return age; 

set { 
age = value ; 



class Program { 
static void Main( string[] args) { 
Student xyy = new Student( "小月月" , 14); 
Student fj = new Student( "鳳姐" , 18); 
Student fr = new Student( "芙蓉姐姐" , 19); 
Student xl = new Student( "犀利哥" , 20); 
ArrayList student = new ArrayList(); 
student.Add(xyy); //添加 也可以使用AddRange 
student.Add(fj); 
student.Add(fr); 
student.Add(xl); 
//移除 
//student.Remove(fj);//這里移除的就是對(duì)象 而不是值 
//student.RemoveAt(1);//索引移除 
//移除不掉fj 因?yàn)镽emove后是object 按索引移除 
//Student stu = new Student("鳳姐", 18); 
//student.Remove(stu); 
//Console.WriteLine(student.Contains(stu));//false 通過(guò)索引檢索 因?yàn)閟tu與fj地址是不一樣的 
//遍歷 
for (int i = 0; i < student.Count; i++) { 
Student s = student[i] as Student; //因?yàn)樘砑忧鞍l(fā)生裝箱操作 所以 現(xiàn)在需要拆箱 student[i]是不能點(diǎn)出name的 
Console .WriteLine(s.Name); 

ArrayList ary = new ArrayList(); 
ary.Add( "鳳姐" ); 
ary.Add( "小月月" ); 
//string類(lèi)同樣是引用類(lèi)型 但是這里有些特別 
string name = "鳳姐" ; 
Console .WriteLine(ary.Contains(name));//string比較的是內(nèi)容 所以返回true 
//根據(jù)學(xué)生姓名 獲取學(xué)生對(duì)象 雖然ArrayList可以實(shí)現(xiàn) 但是相當(dāng)?shù)膹?fù)雜 而且效率低下 所以接下來(lái)學(xué)習(xí)HashTable 
Console .Read(); 



c、HashTable 

復(fù)制代碼代碼如下:


using System; 
using System.Collections; 
namespace _10_HashTable { 
class Student { 
public Student(string name, int age) { 
this .name = name; 
this .age = age; 

private string name; 
public string Name { 
get { 
return name; 

set { 
name = value ; 


private int age; 
public int Age { 
get { 
return age; 

set { 
age = value ; 



class Program { 
static void Main( string[] args) { 
//仍然使用Student的類(lèi)來(lái)實(shí)現(xiàn) 
//Hashtable鍵值對(duì)形式 key value 相當(dāng)于字典 能根據(jù)學(xué)生的姓名快速的找到對(duì)象 
Student xyy = new Student( "小月月" , 14); 
Student fj = new Student( "鳳姐" , 18); 
Student fr = new Student( "芙蓉姐姐" , 19); 
Student xl = new Student( "犀利哥" , 20); 
Hashtable student = new Hashtable(); 
student.Add( "小月月" , xyy); 
student.Add( "鳳姐" , fj); 
student.Add( "芙蓉姐姐" , fr); 
student.Add( "犀利哥" , xl); 
//student.Add("犀利哥",xl);//錯(cuò)誤 字典中的關(guān)鍵字key 不允許重復(fù) 所以不能再添加犀利哥 
//移除 因?yàn)闆](méi)有索引 所以沒(méi)有RemoveAt() 
student.Remove( "小月月" );//根據(jù)key來(lái)移除 
student.Clear(); 
student.ContainsKey( "鳳姐" );//判斷是不是含有這個(gè)鍵 
//遍歷 因?yàn)樽值錄](méi)有索引 所以不能使用for來(lái)遍歷 只能使用foreach 
//按key遍歷 經(jīng)常用 
foreach (object key in student.Keys) { 
Student stu = student[key] as Student; 
Console .WriteLine(key); 
Console .WriteLine(stu.Age); 

//按value遍歷 
foreach (object value in student.Values) { 
Student stu = value as Student; 
if (stu != null ) { 
Console .WriteLine(stu.Age); 


//如果不按key 也不按value遍歷 對(duì)字典遍歷就是對(duì)字典的鍵值對(duì)進(jìn)行遍歷 
foreach (DictionaryEntry de in student) { 
Console .WriteLine(de.Key); 
Student s = de.Value as Student; //因?yàn)榈玫降氖莖bject類(lèi)型 所以 還需要轉(zhuǎn)換才可以使用 
Console .WriteLine(s.Age); 

Student s2 = student["小月月" ] as Student ;//通過(guò)姓名找到該對(duì)象 獲取其他的屬性 
if (s2 != null ) { 
Console .WriteLine(s2.Age); 

Console .Read(); 



d、練習(xí) 

復(fù)制代碼代碼如下:


using System; 
using System.Collections; 
namespace _11_ArrayList練習(xí) { 
class Program { 
//還是那句話(huà) 理解題目之后 有了思路再開(kāi)始寫(xiě)code 思路最重要 
static void Main( string[] args) { 
//兩個(gè)集合{ “a”,“b”,“c”,“d”,“e”}和{ “d”, “e”, “f”, “g”, “h” },把這兩個(gè)集合去除重復(fù)項(xiàng)合并成一個(gè) 
ArrayList ary1 = new ArrayList { "a" , "b" , "c", "d" , "e" }; 
ArrayList ary2 = new ArrayList { "d" , "e" , "f", "g" , "h" }; 
//遍歷兩個(gè)集合 
for (int i = 0; i < ary2.Count; i++) { //循環(huán)遍歷ary2元素與ary1逐個(gè)比較 如果存在相同值 則不添加 否則追加到ary1中 
if (!ary1.Contains(ary2[i])) {//有Contains方法 如果沒(méi)有 不知道有多復(fù)雜 
ary1.Add(ary2[i]); 


foreach (object item in ary1) { 
Console .Write(item); 

//隨機(jī)生成10個(gè)1-100之間的數(shù)放到ArrayList中,要求這10個(gè)數(shù)不能重復(fù),并且都是偶數(shù) 
ArrayList arylist = new ArrayList(); 
//int numCount = 0; 
while (true ) { 
Random ran = new Random(); 
int num = ran.Next(1, 100); 
if (num % 2 == 0 && !arylist.Contains(num)) { //添加!arylist.Contains(num)這句話(huà) 解決以下問(wèn)題 
arylist.Add(num); //為什么直接運(yùn)行總顯示第一個(gè)滿(mǎn)足條件數(shù)值 而單步調(diào)試卻顯示正確結(jié)果??? 

if (arylist.Count == 10) { 
break ; 


foreach (object item in arylist) { 
Console .WriteLine(item); 

//有一個(gè)字符串是用空格分隔的一系列整數(shù),寫(xiě)一個(gè)程序把其中的整數(shù)做如下重新排列打印出來(lái):奇數(shù)顯示在左側(cè)、偶數(shù)顯示在右側(cè)。比如‘2 7 8 3 22 9'顯示成‘7 3 9 2 8 22 
string str = "2 7 8 3 22 9" ; 
ArrayList ary3 = new ArrayList(); 
ArrayList ary4 = new ArrayList(); 
string [] s = str.Split(' ' ); 
foreach (var item in s) { 
if (Convert .ToInt32(item) % 2 == 0) { 
ary4.Add(item); 
} else { 
ary3.Add(item); 


ary3.AddRange(ary4); //因?yàn)閍ry1類(lèi)型為object 所以無(wú)法使用string類(lèi)的join方法實(shí)現(xiàn)字符拼接 后面學(xué)過(guò)泛型集合可以處理 
string newstr = ary3[0].ToString();//簡(jiǎn)單方式去掉空格 
for (int i = 1; i < ary3.Count; i++) { 
newstr += " " + ary3[i]; 

Console .WriteLine("原字符串:{0},篩選后的字符串{1}" , str, newstr + "test" ); 
Console .Read(); 


延伸 · 閱讀

精彩推薦
主站蜘蛛池模板: h日本漫画全彩在线观看 | 国产精品视频一区二区三区 | 国产视频久久久 | 国产香蕉久久 | 黑人群性xxx | 久久久久久88色偷偷 | yy111111免费观看 | 美女福利视频网站 | 欧美艳星kagneyiynn | 日本漫画工囗全彩内番e绅 日本伦理动漫在线观看 | 麻豆视频免费在线观看 | 黑人巨茎大战欧美白妇 | 男人j放进女人的p免费看视频 | 亚洲另类中文字幕 | 大胸孕妇孕交pregnantsex 大象视频污 | 免费一级特黄特色大片∵黄 | 精品国产麻豆AV无码 | 色五夜婷婷 | 无人知晓小说姜璟免费阅读 | 男人插曲女人下面 | jzzjlzz亚洲乱熟在线播放 | 亚洲女同在线观看 | 黑人biglackon10十 | 韩国免费视频 | 免费高清特黄a 大片 | 国色天香社区视频在线观看免费完整版 | 午夜秀场在线观看 | 国产精品视频免费看 | 亚洲国产一区二区三区a毛片 | 亚洲爆操 | 久久久久久免费观看 | 久久精品免视看国产 | 精品无码久久久久久久久 | 女教师被学生糟蹋三天 | 国内精品伊人久久大香线焦 | 欧美视频网址 | 成年人在线观看免费视频 | 国产精品日韩欧美一区二区三区 | 午夜亚洲国产 | 色香视频在线 | 香蕉精品国产高清自在自线 |