设为首页 加入收藏

TOP

数据类型和特殊类型-C#(二)
2019-09-23 11:13:04 】 浏览:123
Tags:数据 类型 特殊 -C#
rs.Push(
"two"); numbers.Push("three"); numbers.Push("four"); numbers.Push("five");//放进去 foreach (string number in numbers) { Console.WriteLine(number); } Console.WriteLine($"Pop '{numbers.Pop()}'");//获取并移除 Console.WriteLine($"Peek at next item to dequeue: { numbers.Peek()}");//获取不移除 Console.WriteLine($"Pop '{numbers.Pop()}'"); Stack<string> stackCopy = new Stack<string>(numbers.ToArray()); foreach (string number in stackCopy) { Console.WriteLine(number); } Console.WriteLine($"stackCopy.Contains(\"four\") = {stackCopy.Contains("four")}"); stackCopy.Clear(); Console.WriteLine($"stackCopy.Count = {stackCopy.Count}");

  队列是没有底的瓶子,栈是有底的瓶子

  集合:纯粹的集合,容器,东西丢进去,唯一性,无序的。

  HashSet:hash分布,元素间没有关系,动态增加容量,去重的。统计用户IP;IP投票;交叉并补;二次好友/间接关注/粉丝集合

 HashSet<string> hashSet = new HashSet<string>();
 hashSet.Add("123");
 hashSet.Add("689");
 hashSet.Add("456");
 hashSet.Add("12435");
 hashSet.Add("12435");
 hashSet.Add("12435");

HashSet<string> hashSet1 = new HashSet<string>();
 hashSet1.Add("123");
 hashSet1.Add("689");
 hashSet1.Add("789");
 hashSet1.Add("12435");
 hashSet1.Add("12435");
 hashSet1.Add("12435");
 hashSet1.SymmetricExceptWith(hashSet);//
 hashSet1.UnionWith(hashSet);//
 hashSet1.ExceptWith(hashSet);//
 hashSet1.IntersectWith(hashSet);//

 

  SortSet:排序的集合;去重而且排序;统计排名,每统计一个就丢进去集合

 SortedSet<string> sortedSet = new SortedSet<string>();
 //IComparer<T> comparer  自定义对象要排序,就用这个指定
 sortedSet.Add("123");
 sortedSet.Add("689");
 sortedSet.Add("456");
 sortedSet.Add("12435");
 sortedSet.Add("12435");
 sortedSet.Add("12435"); 

SortedSet<string> sortedSet1 = new SortedSet<string>();
 sortedSet1.Add("123");
 sortedSet1.Add("689");
 sortedSet1.Add("456");
 sortedSet1.Add("12435");
 sortedSet1.Add("12435");
 sortedSet1.Add("12435");
 sortedSet1.SymmetricExceptWith(sortedSet);//
 sortedSet1.UnionWith(sortedSet);//
 sortedSet1.ExceptWith(sortedSet);//
 sortedSet1.IntersectWith(sortedSet);//

  读取和增删都快的,有没有?有,hash散列,字典。是key-value,一段连续空间放value(开辟的空间比用到的多,hash使用空间换性能),基于key散列计算得到地址索引,这样读取快,但是没有数组快。增删也快,删除时也是计算位置,增加也不影响别人。代价就是,肯定会出现2个key(散列冲突),散列结果一致,可以让第二次的+1;可能会造成效率的降低,尤其是数据量大的情况下,以前测试Dictionary在3W条左右的时候,性能爱是下降的厉害。

  Hashtable---key-value,体积可以动态增加,拿着key计算下一个地址,然后放入key-value;object-装箱茶香,如果不同的key得到相同的地址,第二个在前面地址上+1;查找的时候,如果地址对应数据的key不对,那就+1查找。。

  浪费了空间,Hashtable是基于数组实现;查找个数据,一次定位;增删,一次定位;增删改查都很快,但是浪费空间,数据太多,重复定位定位,效率就下去了。

 Hashtable table = new Hashtable();
 table.Add("123", "456");
 table[234] = 456;
 table[234] = 567;
 table[32] = 4562;
 table[1] = 456;
 table["eleven"] = 456;
 foreach (DictionaryEntry objDE in table)
 {
     Console.WriteLine(objDE.Key.ToString());
首页 上一页 1 2 3 4 下一页 尾页 2/4/4
】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
上一篇C#中 EF 性能优化 下一篇WPF自定义控件的制作

最新文章

热门文章

Hot 文章

Python

C 语言

C++基础

大数据基础

linux编程基础

C/C++面试题目