数组的长度声明后就是固定的,且都是存的同一种类型的数据。
集合的长度是不固定的(主要特征),可以存不同类型的元素;但泛型集合必须是同一种类型的集合
集合内部的原理用的还是数组,都是依赖于数组的,内部存数据都是存到了数组中。
集合的命名空间
using System.Collections;(非泛型集合)using System.Collections.Generic;(泛型集合)
常用集合
- 类似数组集合:
AraylList、List<T> - “键值对”集合(“哈希表”集合):
Hashtable、Dictionary<K,V> - “堆栈”集合:
Stack、Stack<T>(LIFO)Last In First Out - “队列”集合:
Queue、Queue<T>(FIFO)First In First Out - “可排序键值对“集合:(插入、检索没有“哈希表”集合高效)
SortedlList、SortedList<K, V>(占用内存更少,可以通过索引访词)SortedDictionary<K,V>(占用内存更多,没有索引,但插入、删除元素的速度比SortedList快)
Set集合:无序、不重复。HashSet<T>,可以将HashSet类视为不包含值的Dictionary集合。与List<T>类似。SortedSet<T>(.net4.0支持,有序无重复集合)- “双向链表”集合:
LinkedList<T>,增删速度快。
增删改查遍历
ArrayList、Hashtable、List<T>、 Dictionary<K,V> :
- 数组的特点:类型统一、长定固定。
- 集合常用操作添加、遍历、移除
- 命名空间
System.Colections ArayList可变长度数组,使用类似于数组- 属性
Capacity(集合中以容纳元素的个数,翻信增长);Count(集合中实际存放的元素的个数。) - 方法
Add(10)AddRange(ICollection c)Remove()RemoveAt()Clear()Contains()ToArray()Sort()排序Reverse()//反转
- 属性
Hashtable键值对的集合,类似于字典,Hashtable在查找元素的时候,速度很快。Add(object key, object value);hash["key"];hash["key"]="修改";ContainsKey(key);Remove("key");- 遍历;
hash.Keys;hasth.Values/Dictionary Entry;- 键值对集合中的”键”,绝对不能重复。
1 | using System; |
输出:
1 | 集合中存在的元素个数4。 |
ArrayList 排序等
要想任意类型实现ArrayList Sort() 排序,需要实现 IComparable 这个接口。
1 | using System; |
输出:1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27==========升序========
1
3
9
10
26
==========降序========
26
10
9
3
1
==========字符串排序========
fxh
hl
ksjd
xzl
yzk
zaz
==========对象排序========
元素个数:4
hjk
cbv
gdss
rtsssy
请按任意键继续. . .
ArrayList 任何情况排序
总结:如果要升序再写一个类实现 IComparer,如果按年龄再写一个类实现IComparer,依次… 有多少个情况。
就写多少个比较的类就行了,不用去改源代码。
1 | using System; |
输出:1
2
3
4
5
6
7
8
9
10
11
12==========对象排序========
元素个数:4
100
90
800
70
==========姓名长短排序后========
hjk
cbv
gdss
rtsssy
请按任意键继续. . .
参考:
1.link-01 // B站视频教程地址,来自:传智播客