1.array和list的优缺点,使用场景
数组
1.数组需要预留空间,可能会造成内存浪费
2.要定义数组首先要有一段足够长的连续空间
3.数组大小事固定的,不支持动态的扩展
列表
内部维护一个数组,数组大小不是固定的,支持动态的扩展
使用场景
1.数组:数量几乎不会改变
2.列表:数量不确定
2.队列和栈的实际应用
构建对象池这种功能是适合使用队列和栈,因为并不在乎进出顺序,其性能较佳
3.字典有什么特点
1.Dictionary里面每一个元素都是以键值对的形式存在的
2.键必须是唯一的,而值不需要唯一
3.键和值都可以以任何数据类型存在
4.通过一个键值读取一个值的时间接近O(1)
C#中的Dictionary是一种键值对集合,它使用哈希表实现,在插入、删除和查找操作上具有高效的性能。
字典表示一种数据结构,这种数据结构允许按照某个键来访问元素。
内部是以key,value的形式存储数据,每个元素都是一个键值对
字典长度是不固定的,随着元素增减而改变
key相当于数组索引值 ,key需要自定义在一个字典中,key的定义不能重复,具有唯一性
优点:
1). 快速的查找:Dictionary内部使用哈希表来存储数据,可以通过键来快速查找对应的值,平均查找时间复杂度为O(1)。
2). 唯一键:Dictionary要求键的唯一性,保证了键的唯一性,防止重复的键的存在。
3). 内存效率:相对于其他集合类型,Dictionary在存储大量数据时,具有较低的内存占用。
缺点:
1). 内存消耗:由于Dictionary使用哈希表来存储数据,需要使用额外的内存空间来存储哈希表和键值对对象。
2). 无序集合:Dictionary中的元素是无序的,并不像SortedSet或List那样保持有序。
4.常用的设计模式
单例模式,状态模式,观察者模式,命令模式,工厂模式
5.工厂模式
工厂模式是一种创建型模式,为的是减少创建对象吧时,使用端与具体的类耦合关系,尤其是在有多重对象需要创建时,那么使用端就会与多个类之间产生耦合,工厂模式也算是符合迪米特法则,尽量让使用端金肯的指导更少的类,而通过工厂去与具体的类产生联系,只依赖于工厂和产品的抽象类,总的来说,就是把使用产品的各种业务逻辑和产品的创建分离开来。
6.单例模式
单例,模式是比较常见的一种设计模式,目的是保证一个类只能有一个实例,而且自行实例化并向整个系统提供这个实例,避免频繁创建对象,节约内存。
单例模式的应用场景很多,比如我们电脑的操作系统的回收站就是一个很好的单例模式应用,电脑上的文件,视频,音乐等被删除后都会进入到回收站中;还有计算机中的打印机也是采用单例模式设计的,一个系统重可以存在多个打印任务,但是只能有一个正在工作的任务;Web页面的计数器也是用单例模式实现的,可以不用把每次刷新都记录到数据库中。
一般应用在各种管理器中。
单例模式包含:
1.饿汉式
2.懒汉式
3.双检锁懒汉式
4.静态内部类单例式
5.枚举单例式