下南洋三毛钱看,鬼打鬼之黄金道长,河南警察学院院长毛志斌
集合命名空间:
using system.collections. 非泛型集合
using system.collections.generic. 泛型集合
为什么要用集合:
1、数组一旦声明长度就固定了。
2、集合有很多方法可以用
等
常用集合:
类似数组集合:arraylist list<>
键值对集合:hashtable dictionary<k v>
栈集合:stack
队列:queye
等
arraylist:
class program { static void main(string[] args) { arraylist arraylist = new arraylist(); arraylist.add(1); //增加一个元素 arraylist.addrange(new int[] { 2, 3 });//增加一个集合 arraylist.insert(0, "开始:");//在指定位子插入一个元素 arraylist.insertrange(4, new string[] { "一", "二", "三" });//指定位置插入集合 arraylist.removeat(7); arraylist.clear();//清空集合 for (int i = 0; i < arraylist.count; i++) { console.writeline(arraylist[i]); } } }
remove()不是根据对象来判断的,而是根据值来判断。
contains()是否包含某个值,也是根据值来判断的。
集合转为数组:.toarray().
排序: 1、.sort() 升序 没有降序 可以用.reverse()颠倒位置实现。
2、想让任何集合实现排序需要实现 icomparable接口 。
3、直接调用sort是使用icompareble 接口的默认方式来排序。可以用sort的重载,使用自己的比较器。
hashtable:
简单添加和获取:
class program { static void main(string[] args) { hashtable hashtable = new hashtable(); hashtable.add("sam", "sam"); hashtable.add("penny", new person() { name = "penny" }); console.writeline(hashtable["sam"]); person penny = hashtable["penny"] as person; console.writeline(penny.name); } }
键值对集合的键不能重复。
判断是否存在某个键:.contentskey() 是否存在某个值:.contentsvalue()
遍历hash table:
class program { static void main(string[] args) { hashtable hashtable = new hashtable(); hashtable.add("sam", "sam"); hashtable.add("penny", "penny"); //遍历键 foreach (object item in hashtable.keys) { console.writeline("key:{0}----value:{1}",item,hashtable[item]); } //遍历值 foreach (object item in hashtable.values) { console.writeline("value:{0}",item); } //遍历键值对 foreach (dictionaryentry item in hashtable) { console.writeline("key:{0}---value{1}",item.key,item.value); } } }
集合小练习:
两个arrrylist集合的并集。
class program { static void main(string[] args) { arraylist a = new arraylist(new string[] {"a","b"}); arraylist b = new arraylist(new string[] { "a", "b","c","d" }); for (int i = 0; i <b.count; i++) { if (!a.contains(b[i])) { a.add(b[i]); } } for (int i = 0; i < a.count; i++) { console.writeline(a[i]); } } }
随机生成十个1-100之间的数放到arraylist中,这些数必须是偶数且不能重复。
class program { static void main(string[] args) { arraylist arraylist = new arraylist(); random random = new random(); while (arraylist.count<10) { int r = random.next(1, 101); if (!arraylist.contains(r)&&((r%2)==0)) { arraylist.add(r); } } for (int i = 0; i < arraylist.count; i++) { console.writeline(arraylist[i]); } } }
上面程序把random放循环外面效率更好,因为无参的random构造函数以系统时间为种子,而一遍循环完了以后时间还没来得及变,就会生成相同的数。
泛型集合:
list<string> list = new list<string> ()
和 arraylist相比:
数据类型固定,有更多的方法可以用。
dictionary<string, int> dic = new dictionary<string, int> ;
和hashtable相比:
键和值都有类型约束。
遍历键值对:
class program { static void main(string[] args) { dictionary<string, int> dic = new dictionary<string, int>(); dic.add("sam", 22); dic.add("penny", 23); foreach (keyvaluepair<string,int> item in dic) { console.writeline("keys:{0}--value:{1}",item.key,item.value); } } }
判断字符串中每个字母出现的次数:
class program { static void main(string[] args) { string str = "wellcome to china"; dictionary<char, int> dict = new dictionary<char, int>(); for (int i = 0; i < str.length; i++) { if (char.isletter(str[i])) { if (dict.containskey(str[i])) { dict[str[i]]++; } else { dict.add(str[i], 1); } } } foreach (keyvaluepair<char,int> item in dict) { console.writeline("{0}----{1}",item.key,item.value); } } }
如对本文有疑问,请在下面进行留言讨论,广大热心网友会与你互动!! 点击进行留言回复
Blazor server side 自家的一些开源的, 实用型项目的进度之 CEF客户端
.NET IoC模式依赖反转(DIP)、控制反转(Ioc)、依赖注入(DI)
vue+.netcore可支持业务代码扩展的开发框架 VOL.Vue 2.0版本发布
网友评论