關于集合之Hashtable,以及索引器

為什么要引入集合?

因為數(shù)組有很多的局限性,以下舉三個最主要的

1.數(shù)組只能存取相同類型的數(shù)據(jù)比如int數(shù)組只能存int類型的數(shù)據(jù)

?2.數(shù)組存在大量的垃圾數(shù)據(jù)

?3.數(shù)組不能動態(tài)的擴展長度

因為數(shù)組的局限性,所以引入集合的概念。


Hashtable ht = new Hashtable();

Hashtable 的數(shù)據(jù)都是以鍵值對的形式出現(xiàn)

ht.add("key","value"); 往Hashtable 中加入元素

通過key取value

console.WriteLine(ht["key"]);

通過一個key移除一個值

ht.Remove("key");

全部清除

ht.Clear();

索引器


索引器:

?對于索引器,看起來有點像屬性,同樣有get,set方法,但是有區(qū)別

?1.索引器必須是實例成員,也就是不能加static,屬性可以是靜態(tài)成員

?2.索引器可以被重載,屬性不可以

?3.要使用this關鍵字來定義索引器

4.索引器不能用static修飾


索引器和數(shù)組比較:

(1)索引器的索引值(Index)類型不受限制

(2)索引器允許重載

(3)索引器不是一個變量


//這是我自己寫的索引器

class Person//需要索引的類,保存字段

{

public int Age;

public string Name;

public int Id;

public Person(string name,int age,int id)

{

Age = age;Name = name;Id = id;

}

}

//泛型索引器,引用泛型是為了免去裝箱和拆箱的操作

class PersonSelect{

Listlist<Person>= new List<Person>();//

//通過ID和年齡查找名字

public string this [int index, int age] {

set{ list.Add (new Person (value, age, index)); }

get {

foreach (Person p in list) {

if (p.Age == age && p.Id == index) {

return p.Name;

}

}

return "";

}

}

//通過名字和年齡查找ID

public int this[string name,int age]

{

get

{

foreach ( Person p in list) {

if (p.Name == name && p.Age == age) {

return p.Id;

}

}

return -1;

}

set{ list.Add (new Person (name, age, value));}

}

//還可以有更多的索引器

}

class MainClass

{

public static void Main (string[] args)

{

PersonSelect ps = new PersonSelect ();

ps [1, 2] = "A";

ps [2, 2] = "B";

ps [3, 3] = "C";

ps ["QQ", 1] = 2;

ps ["qq", 2] = 1;

Console.WriteLine (ps["QQ",1]+" "+ ps[1,2] + " "+ps["qq",2]);

}

}

最后編輯于
?著作權歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關閱讀更多精彩內(nèi)容

  • Spring Cloud為開發(fā)人員提供了快速構建分布式系統(tǒng)中一些常見模式的工具(例如配置管理,服務發(fā)現(xiàn),斷路器,智...
    卡卡羅2017閱讀 136,715評論 19 139
  • 1. Java基礎部分 基礎部分的順序:基本語法,類相關的語法,內(nèi)部類的語法,繼承相關的語法,異常的語法,線程的語...
    子非魚_t_閱讀 34,898評論 18 399
  • 20- 枚舉,枚舉原始值,枚舉相關值,switch提取枚舉關聯(lián)值 Swift枚舉: Swift中的枚舉比OC中的枚...
    iOS_恒仔閱讀 2,441評論 1 6
  • 你走了,在這個晚上的11:45分… 我是后來才知道的。 同一個時間我在干嘛?是被抱抱摟在懷里安慰?還是焦急地不斷打...
    老爸我很想你閱讀 161評論 0 1

友情鏈接更多精彩內(nèi)容