C((zhi ArayList)、hashSet、hashTable、List、Dictoraryの違いを詳しく説明します。


C铉の中では、配列は固定長さのため、常に我々の開発のニーズを満たすことができません。
この制限は不便なので、アラーリストが現れました。
ArayList、List<T>
ArayListは可変長配列で、任意の多データAddをArayListの中に入れることができます。その内部メンテナンスの配列は、長さが足りないと自動的に2倍に拡大されます。
しかし、ArayListには、ArayListに格納されたデータはすべてObjectタイプであるという欠点もありますので、値の種類を入れたり取り出したりすると、箱詰めや箱詰め操作(値の種類と参照の種類との間の変換)が発生し、これはプログラムの性能に影響します。Net 2.0の汎型が現れたら、List<T>を提供します。
List<T>はArayListの一般バージョンであり、箱を開けて直接に取り出して直接に使う必要がなくなりました。これは基本的にArayListと一致していますが、使う時はまずそのタイプを設定して、このタイプのデータではなく、Addを入れてはいけません。
性能としては、配列に格納するデータが一つしかないなら、List<T>が最適であることは間違いない。

List<int> ListInt = new List<int>();
行列が長くなると、またポイントが貯まります。それなら、アラーリストしか使えません。
HashTable(ハッシュ・テーブル)、Dictionary<T,T>
HashTableはkeyによって非常に速いキーのデータを検索する構造であり、重複keyがあってはいけません。その特徴のため、その長さはいつも1つの素数なので、拡張容量は2倍より少し大きくなります。負荷係数は0.72 fです。
たくさんkeyを使ってvalueを調べます。HashTableは一番選択があります。HashTableはArayListと同じで、非泛型です。valueはObjectです。アクセスは箱詰め、箱解体が発生します。だからDictoryが現れました。
DictionaryはhashTableの一般バージョンで、アクセスは同じですが、箱詰めや箱を外す必要はありません。また、アルゴリズムを最適化しました。hashtableは0.72で、浪費容量がかなり少なくなりました。

Dictionary<string,Person> Dic = new Dictionary<string,Person>();
hashSet
HashSet類、アルゴリズム、記憶構造はすべてハッシュテーブルと同じで、主に高性能セット演算を行うために設計されています。セットには、重複しない、特定の順序なしの要素が含まれています。
Que、Que
Queue列、Queue泛型の隊列、大学はすべて学んだことがあって、隊列、先進は先に出して、とても役に立ちます。
Stck、Stck<T>
Stockスタック、先进的に出ます。
SortedList、SortedList
SortedList集合におけるデータは秩序化されている。keyでデータにマッチすることもできますし、intでデータを取得することもできます。
追加操作はArayListより遅いです。検索、削除操作はArayListより速く、Hashtableより遅いです。
Sorted Dictionary<TKey、TValue>
Sortedictorary<TKey,TValue>はSorteList<TKey,TValue>に比べて性能が最適化されています。Sortedictious<TValue>は内部メンテナンスの配列であり、Sortedictory<TValue>内部メンテナンスのは赤いツリー(平衡二叉樹)の一種です。唯一の差は下付きで値を取ることができません。
ListDictionary(一方向チェーン)、Linked List<T>(双方向チェーン)
ListやArayList、hashtableなどの容器類は、内部を守る配列Arayであり、ListDictionaryやLinkdList<T>はArayではなく、チェーンで保存されています。チェーンテーブルの最大のメリットはメモリ空間を節約することです。
ListDictionaryは一方向チェーンです。
Linked List双方向リンク表。双方向チェーンの利点は、任意の位置に挿入できます。
HynidDictionary
HybiridDictionaryのクラスは、Hashtable検索効率の高さとListDictionaryがメモリ空間を占有するのが少ない利点を十分に利用しています。HashtableとListDictionaryの二つの容器を内蔵しています。データを追加する時の内部ロジックは以下の通りです。
データ量が8未満の場合、Hashtableはnullで、ListDictionaryでデータを保存します。
データ量が8より大きい場合は、実際にはHashtableにデータを移し、ListDictionaryをnullにする。
BitAray
BitArayというのはバイナリ演算に使われています。「または」「非」「和」「非」などの操作はtrueまたはfalseしか保存できません。
アプリケーションシーン
ArayList、List<T>:成長配列;
HashTable、Dictionary:頻繁にkeyによってvalueを検索します。
HashSet:集合演算;
Que、Que:先进先入先出;
スタック、スタック:スタック、先に出る;
SortedList、SortedList<TKey、TValue>:ハッシュ表は、下付きを通過して、またkeyで値を取る時に選択できます。
ListDictionary:一方向チェーンテーブルは、データを追加するたびにチェーンテーブルを巡回して、データ量が大きい時は効率が低く、データ量が大きく、挿入が頻繁な場合は、選択してはいけません。
Linked List<T>:双方向リンク;
HybiridDictionary:未知のデータ量が大きい時間、利用できます。
Sortedictionary<TKey、TValue>:Sortedist<TKey、TValue>の最適化版で、内部配列はバランスの二叉樹を回転します。
BitAray:バイナリ演算で選択できます。
以上が今回紹介したすべての知識点の内容です。応援ありがとうございます。