数组的长度声明后就是固定的,且都是存的同一种类型的数据。
集合的长度是不固定的(主要特征),可以存不同类型的元素;但泛型集合必须是同一种类型的集合
集合内部的原理用的还是数组,都是依赖于数组的,内部存数据都是存到了数组中。
集合的命名空间
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站视频教程地址,来自:传智播客