分享

.Net 集合数据类型总结

 张小龙net馆藏 2019-01-15

一、数组
分配在连续的内存,不能随意扩展,插入数据比较慢
性能高,索引查找快,数据再多性能也没有影响

int[] array = new int[4];
string[] array = new string[]{"123","456"};
  • 1
  • 2

二、 ArrayList
可变长度的,不限制类型,可以放置不同类型,所以不安全,可能会用错。
会有装箱操作,将一切元素都当作object,值类型会装箱

ArrayList arrayList = new ArrayList();
arrayList.Add("123");
arrayList.Add(123);
  • 1
  • 2
  • 3

三、 List< T >
可变长度的泛型数组,没有装箱拆箱,类型安全

四、 LinkedList< T >
链表,在内存中不连续存储。添加删除元素效率比较高,只能遍历查找,不能索引访问,所以查询速度慢

LinkedList<string> list = new LinkList<string>();
list.AddFirst("123");
list.AddFirst("456");
  • 1
  • 2
  • 3

五、Queue< T>
队列,先进先出,非线程安全,应用:多线程写日志
ConcurrentQueue 线程安全的

Queue<string> numbers = new Queue<string>();
numbers.Enqueue("张三"); //入队列
numbers.Enqueue("李四");

numbers.Dequeue(); //出队列
numbers.Peek(); //获取对象但不移除
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6

六、 Stack< T>
栈,先进后出

Stack<string> numbers = new Stack<string>();
numbers.Push("张三");//入栈
numbers.Push("李四");

numbers.Pop(); //出栈
  • 1
  • 2
  • 3
  • 4
  • 5

七、HashTable
哈希表,散列存储,将key做一个散列计算得到一个地址
不同的key,可能得到同一个结果,存储的时候把位置挪一下,也就是说原始保存数据的地方,需要预留空间
可以快速的增删改查(空间换时间)
线程安全的

HashTable table = new HashTable();
table.Add("123","456");

foreach(DictionaryEntry obj in table)
{
    Console.WriteLine(obj.Key.ToString());
    Console.WriteLine(obj.Value.ToString());
}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8

八、 Dictionary< TKey,TValue>
泛型的HashTable
ConcurrentDictionary 线程安全的

Dictionary<int,string> dic = new Dictionary<int,string>();
dic.Add(1,"123");
dic.Add(2,"456");

foreach(var item in dic){
    Console.WriteLine($"{item.Key} : {item.Value}");
}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多