NET(C#) HashSet、SortedSet和Hashtable的使用
本文主要介紹.NET(C#)中,HashSet
1、HashSet
HashSet類提供高性能的設(shè)置操作。集是不包含重復(fù)元素的集合,其元素?zé)o特定順序。泛型的使用保證類型安全,可以避免裝箱拆箱。對象的容量?HashSet?是對象可以容納的元素數(shù)。?HashSet當(dāng)向?qū)ο筇砑釉貢r,對象的容量會自動增加。兩個集合求交集、并集、差集和補(bǔ)集等操作。
例如,
Console.WriteLine("***************HashSet******************" );HashSet<string> hashSet = new HashSet<string>();hashSet.Add("C#");hashSet.Add("C/C++");hashSet.Add("Java");hashSet.Add("Python");hashSet.Add("Python");hashSet.Add("Python");//hashSet[0];foreach (var item in hashSet){Console.WriteLine(item);}Console.WriteLine(hashSet.Count);Console.WriteLine(hashSet.Contains("Python"));HashSet<string> hashSet1 = new HashSet<string>();hashSet1.Add("C#");hashSet1.Add("C/C++");hashSet1.Add("Java");hashSet1.Add("Python");hashSet1.Add("Python");hashSet1.Add("Python");hashSet1.SymmetricExceptWith(hashSet);//補(bǔ)hashSet1.UnionWith(hashSet);//并hashSet1.ExceptWith(hashSet);//差hashSet1.IntersectWith(hashSet);//交hashSet.ToList();hashSet.Clear();
2、SortedSet
SortedSet表示按排序順序維護(hù)的對象的集合。SortedSet?對象在插入和刪除元素時維護(hù)排序順序,而不會影響性能。
例如,
Console.WriteLine("***************SortedSet******************" );SortedSet<string> sortedSet = new SortedSet<string>();//IComparercomparer 自定義對象要排序,就用這個指定 sortedSet.Add("C#");sortedSet.Add("C/C++");sortedSet.Add("Java");sortedSet.Add("Python");sortedSet.Add("Python");sortedSet.Add("Python");foreach (var item in sortedSet){Console.WriteLine(item);}Console.WriteLine(sortedSet.Count);Console.WriteLine(sortedSet.Contains("Python"));{SortedSet<string> sortedSet1 = new SortedSet<string>();sortedSet1.Add("C#");sortedSet1.Add("C/C++");sortedSet1.Add("Java");sortedSet1.Add("Python");sortedSet1.Add("Python");sortedSet1.Add("Python");sortedSet1.SymmetricExceptWith(sortedSet);//補(bǔ)sortedSet1.UnionWith(sortedSet);//并sortedSet1.ExceptWith(sortedSet);//差sortedSet1.IntersectWith(sortedSet);//交}sortedSet.ToList();sortedSet.Clear();
3、Hashtable
Hashtable表示根據(jù)鍵的哈希代碼進(jìn)行組織的鍵/值對的集合。任何元素都是當(dāng)成object處理,如果是值類型,會有裝箱操作。不推薦使用?Hashtable?類進(jìn)行新的開發(fā)。推薦使用泛型?Dictionary?類。
例如,
Console.WriteLine("***************Hashtable******************");Hashtable table = new Hashtable();table.Add("code", "C#");table[1011] = "Java";table[1012] = "Python";table[1014] = 3333;table[1015] = 4444;table["cjavapy"] = 5457;foreach (DictionaryEntry objDE in table){Console.WriteLine(objDE.Key.ToString());Console.WriteLine(objDE.Value.ToString());}//線程安全,Hashtable.Synchronized(table)返回 Hashtable 的同步(線程安全)包裝。var shash = Hashtable.Synchronized(table);//只有一個線程寫 多個線程讀//顯示兩個哈希表的同步狀態(tài)Console.WriteLine("table: {0}", table.IsSynchronized ? "synchronized" : "not synchronized" );Console.WriteLine("shash: {0}", shash.IsSynchronized ? "synchronized" : "not synchronized");
出處:https://www.cjavapy.com/article/2510/
版權(quán)申明:本文來源于網(wǎng)友收集或網(wǎng)友提供,僅供學(xué)習(xí)交流之用,如果有侵權(quán),請轉(zhuǎn)告版主或者留言,本公眾號立即刪除。
支持小微:
騰訊云 爆款2核2G云服務(wù)器首年40元,企業(yè)首購最高獲贈300元京東卡
鏈接:https://curl.qcloud.com/1VVs7OBH
右下角,您點(diǎn)一下在看圖片
小微工資漲1毛
商務(wù)合作QQ:185601686
評論
圖片
表情
