回顾:
从上一节中,可以看出枚举的易用性对数组使用的启示意义。
一、ArrayList
1.基础
(1)使用边界动态按需增长的数组实现IList接口,语法为
[SerializableAttribute]
[ComVisibleAttribute(true)]
public class ArrayList : IList, ICollection, IEnumerable, ICloneable
(2)执行需要排序的操作前,必须对ArrayList排序;
(3)一个ArrayList的容量是它能够容纳(hold)的元素数量;
(4)当元素使用Add()增加到一个ArrayList时,容量通过重新分配自动按需增加;
(5)通过调用TrimToSize()或显示设置Capacity属性减少容量;
(6)集合中的元素使用整数索引来访问,集合的索引值从0开始;
(7)ArrayList集合接受null引用为合法值,并且允许元素值重复;
(8)因为实现了IEnumberable,故可使用foreach遍历。
2.注意事项
线程安全:如果集合没有被修改,ArrayList可以支持并行的多“读者”(reader);要确保线程安全,所有操作必须通过“包装者”(wrapper)进行,该包装者由同步方法(Synchronized method)返回。
枚举的过程原(intrinsically)本就不是线程安全的过程(procedure),即使集合被同步,其它的线程仍能够修改集合,且引发枚举器(enumerator)抛出异常。要确保在枚举的过程中的线程安全,要么对枚举进行全程锁定(lock),要么捕捉由其它线程引起变化对应的异常(exception)结果。
二、Queue
1.基础
(1)先进先出(FIFO)的对象集合(collection);语法为
[SerializableAttribute]
[ComVisibleAttribute(true)]
public class Queue : ICollection, IEnumerable, ICloneable
(2)队列用在对按照接收的顺序储存的信息进行线性处理(sequential processing),该类实现了闭环数组,即存储在队列中的数组从一端进入,从另一端移出;
(3)队列的容量是指队列能够支持的元素个数;元素使用Enqueue()增加到队列时,容量自动地扩充;使用TrimToSize减少容量;
(4)增量因子决定扩容的大小,在队列建立时创建,默认为2.0;但最小以4增加;
(5)队列接收空引用为合法,且允许重复元素。1.0的增量因子是以容量加4进行;
(6)队列具有泛型类型;语法为
[SerializableAttribute]
[ComVisibleAttribute(false)]
public class Queue<T> : IEnumerable<T>, ICollection, IEnumerable
2.注意
枚举的过程原(intrinsically)本就不是线程安全的程序(procedure),即使集合被同步,其它的线程仍能够修改集合,且引发枚举器(enumerator)抛出异常。要确保在枚举的过程中的线程安全,要么对枚举进行全程锁定(lock),要么捕捉由其它线程引起变化所对应的异常(exception)结果。
三、栈
1.基础
(1)表示简单的-对象后进先出(LIFO)非泛型的集合(collection);语法为
[SerializableAttribute]
[ComVisibleAttribute(true)]
public class Stack : ICollection, IEnumerable,ICloneable
(2)栈是一种闭环缓冲区实现(implementation);
(3)栈的容量是栈能支持的元素数量;通过push()向栈中按需增加元素时,它的容量通过自动重新分配来增加;
(4)如果"Count"小于栈的容量,push是一个O(1)操作;容量需要增加时,是一个O(n)操作,n等于"Count";"Pop"是O(1)操作;
(5)空引用在栈中是合法值,允许元素的值重复;
(6)栈有泛型版本;语法为
[SerializableAttribute]
[ComVisibleAttribute(false)]
public class Stack<T> : IEnumerable<T>, ICollection, IEnumerable
2.注意
枚举的过程原(intrinsically)本就不是线程安全的程序(procedure),即使集合被同步,其它的线程仍能够修改集合,且引发枚举器(enumerator)抛出异常。要确保在枚举的过程中的线程安全,要么对枚举进行全程锁定(lock),要么捕捉由其它线程引起变化所对应的异常(exception)结果。
//主要用途示例 using System; using System.Collections; public class SamplesArrayList { public static void Main() { // Creates and initializes a new ArrayList. ArrayList myAL = new ArrayList(); myAL.Add("Hello"); myAL.Add("World"); myAL.Add("!"); // Displays the properties and values of the ArrayList. Console.WriteLine( "myAL" ); Console.WriteLine( " Count: {0}", myAL.Count ); Console.WriteLine( " Capacity: {0}", myAL.Capacity ); Console.Write( " Values:" ); PrintValues( myAL ); } public static void PrintValues( IEnumerable myList ) { foreach ( Object obj in myList ) Console.Write( " {0}", obj ); Console.WriteLine(); } } /* This code produces output similar to the following: myAL Count: 3 Capacity: f Values: Hello World ! */
-----------------------------------------------
小结:典型的集合(collection)的三个分类,分别是ArrayList、Queue和Stack。
发表评论
-
ZT,一篇好文
2010-05-03 10:33 999读读语言大牛们(其中有位是Anders)这篇文章,会很受益。( ... -
关于“匿名方法”与“lambda操作符”的实现
2010-03-24 22:29 871在<关于“回调”的实现>一文中,我们探讨了使用委托 ... -
effective hierarchy(二)之 函数合辑(2)
2009-09-16 21:29 727介绍: 本节我们来看看另外一种封装,构建件。构建件作为 ... -
effective hierarchy(二)之 函数合辑(1)
2009-08-19 14:53 781“暴露”阶段:值-> ... -
effective hierarchy(一)之 基本概念(8)
2009-07-02 23:39 686MSDN,C#2 一、语句 1.结束点和可达性(en ... -
effective hierarchy(一)之 基本概念结束篇
2009-06-30 15:41 663一、函数/功能成员(fun ... -
effective hierarchy(一)之 基本概念(7)
2009-06-23 21:15 937以下可跳过: [立记保留:到现在为止,我满意的是认真的精神。 ... -
effective hierarchy(一)之 基本概念(6)
2009-06-21 00:34 949MSDN,C#2.0 转换(conversions) ... -
effective hierarchy(一)之 基本概念(5)
2009-06-18 22:16 715MSDN,C#2.0 变量基本点: 变量代表 ... -
effective hierarchy(一)之 基本概念(4)
2009-06-15 15:59 727MSDN,C#2.0: 一、名字空间和类型名称(nam ... -
effective hierarchy(一)之 基本概念(3)
2009-06-14 15:00 730MSDN,C#2.0: 一、签 ... -
effective hierarchy(一)之 基本概念(2)
2009-06-13 18:22 828MSDN:基本概念 一、 ... -
effective hierarchy(一) 之基本概念(1)
2009-06-11 09:37 779我告诫自己,不要忽略简单的东西,又要扎实。所以这一篇开始,专门 ... -
effective hierarchy(一)之 属性与索引器
2009-06-07 14:07 1150编程笺言:“优良的设计 ... -
effective hierarchy(一)之 从array说起(4)
2009-06-07 00:53 805回顾:上一节中,我们 ... -
effective hierarchy(一)之 从array说起(2)
2009-06-06 09:34 691复习: 从上一节,可 ... -
effective hierarchy(一)之 从array说起(1)
2009-05-29 13:59 892MSDN(c#2.0): 数组的元义是 ... -
effective hierarchy(一)之 C#中的new
2009-05-27 23:21 840MSDN(c#2.0): 在msdn中,指出new的三种用法。 ...
相关推荐
Hierarchy Viewer 可以从 Android SDK 工具包中启动,通过命令行的方式可以启动。启动后,可以看到当前正在运行中的模拟器的信息,可以鼠标点击已经启动了的 Activity。 四、Inspecting Screenshots Inspecting ...
Hierarchy PRO是一个高级的Hierarchy面板扩展,它提供了更多的自定义选项和便捷的功能。此插件可能包括但不限于以下特性: 1. **过滤与排序**:Hierarchy PRO允许用户根据需求筛选和排序场景中的游戏对象,比如按...
### SAP BW Hierarchy Extractor:从SAP R3系统抽取自定义层级至BW系统的架构 #### 业务场景 在很多企业环境中,管理者需要能够访问其下属员工所负责的数据。尽管SAP Business Warehouse (BW)提供了丰富的业务内容...
3. **旭日图(Sunburst Layout)**:旭日图是一种环形分段的可视化方法,适合展示多层嵌套数据。`d3.partition()`和`d3.arc()`组合使用,可以构建出层次分明的旭日图,中心节点代表整个数据集,向外扩展的每层代表一...
解决这个启动 View Hierarchy时的这个bug: hierarchy viewer unable to debug device
Hierarchy Viewer是Android SDK中自带的一款强大的UI设计与检测工具。它位于Android SDK的`tools`目录下,文件名为`hierarchyviewer.bat`。对于Android开发者来说,这是一个不可或缺的工具,能够帮助他们在开发过程...
Unity是世界上最受欢迎的游戏开发引擎之一,它提供了丰富的工具和功能,让开发者能够创建高质量的2D和3D游戏。在Unity中,"层级编辑器"(Hierarchy)是至关重要的一个部分,它允许开发者组织和管理场景中的游戏对象...
效果及使用方法:https://blog.csdn.net/qq_26318597/article/details/131373576 1.导入插件包 2.选中Hierarchy中的物体 3.右键选择“复制Hierarchy路径” 4.Ctrl + V 粘贴
#### 一、Hierarchy Viewer概览 Hierarchy Viewer是一款由Google提供的强大工具,专为Android开发者设计,旨在辅助界面设计、调试及优化工作流程。通过直观地展示应用UI的层级结构,它使得开发者能够轻松识别布局...
IRQ Hierarchy 的初始化及构建过程详解 IRQ(Interrupt Request)是计算机系统...IRQ hierarchy 的初始化及构建过程是一个复杂的过程,涉及到多个函数和数据结构。理解这些函数和数据结构对于系统的正确运行至关重要。
Unity是世界上最流行的游戏开发引擎之一,它为开发者提供了丰富的工具集来创建交互式3D和2D内容。在Unity中,Hierarchy面板是一个至关重要的组成部分,它显示了场景中的所有游戏对象及其层次结构。QHierarchy是一款...
Enhanced_Hierarchy_2.0_v2.4.5.unitypackage 最新版本哦 正版
Hierarchy PRO 2021 v2021.1u9
通过阅读和理解《VS2010 MFC Hierarchy Chart》的三个部分(MFC_Hierarchy_Chart1of3.pdf、MFC_Hierarchy_Chart2of3.pdf、MFC_Hierarchy_Chart3of3.pdf),开发者可以深入理解MFC的内部结构,从而更好地利用MFC开发...
WPF Class Hierarchy
Hierarchy2 v1.3.10.0
总结来说,HierarchyViewer是Android开发者必备的工具之一,它提供了对应用界面进行深入分析和优化的能力。熟练掌握并运用HierarchyViewer,不仅能够提升应用的性能,还能让用户体验更上一层楼。在实际开发中,我们...
3. **网络列表(Schematic Sheets)**:每个子系统通常由一个或多个网络列表组成,展示元件连接和信号流。网络列表可以包含基本元件、元件库中的模型以及用户定义的函数。 4. **元件库(Component Libraries)**:...