Chap 11 学习笔记-对象和结构化数据

来源:互联网 发布:iphone4有4g网络吗 编辑:程序博客网 时间:2024/06/06 03:37

Chap 11 Notes

--------------------------

 

1、              集合:是用于把其他对象组存储在一个单元中的对象,它还提供了许多标准方法,一边处理其中包含的对象

2、              .NET Framework提供了许多有效的集合对象,如ArrayListHashtable等,都是经常用到的

3、              术语集合是指一种特殊的对象,它可以把它其中的其他对象绑定在一起,对它们单独操作或作为一个组来操作。创建集合的时候,可以先创建一个空白的集合对象,以后再添加对象,或根据需要从集合中删除无用的项

4、              系列:集合最简单的类型是没有以特定顺序组合在一起的一组对象,这称为一个系列。在系列当中,内部元素的顺序并不重要

5、              列表:在集合中,对象以特定的顺序存储,这种集合称为列表。可以指定要添加或删除的对象在序列中的位置,列表可以自由扩展或缩小。列表有定义好的顺序,因此其元素就不需要是惟一的

6、              映射集合:以键/值对的方式存储对象,一个对象惟一标识一个键/值对,另一个对象包含要存储的信息(值)。键的规则类似于列表或数组中的下标,因为它惟一标识一个元素。但与下标不同的是,键不需要是整型数,它可以是任何类型的对象

7、              键不可以有重复的,但值可以重复

8、              堆栈:先进后出;  队列:先进先出

9、              可以把一维数组当作预先填充了值的固定列表,因为它具有前面描述的列表集合的所有属性,只是其元素是在创建列表时才初始化的,而且其长度是固定的。一旦定义好了数组,就不能给它添加元素了。可以使用惟一的下标值引用数组中的一个元素。

10、          数组可以使用System.Array类定义的三个主要方法

(1)        CreateInstance()——初始化System.Array类的一个新实例

(2)        SetValue()——设置指定下标的元素的值

(3)        GetValue()——获取指定下标的元素的值

11、          编写数组的代码示例:见Chap11/rm362_animal_array.aspx

12、          在这段代码中应注意:

(1)        出现错误的CreateInstance()方法,为何调试不成功?应该怎么应用?

(2)        SetValue()GetValue()方法的用法

(3)        Array.IndexOf(AnimalArray,”Cat”,0) 表示将从第0个元素开始搜索,并返回AnimalArray数组中第一个包含Cat值的元素的下标

13、          搜索数组的代码示例:见Chap11/rm363_array_search.aspx

14、          在这段代码中应注意:

(1)        当数组确定了的时候,Array.LastIndexOf(AnimalArray,”Cat”)的值就是确定的

(2)        注意这里的intCounter的用法

(3)        在显示结果的时候,When <label>When <div>

15、          处理数组中的多个元素,可以主要使用两个“方法”,Reverse()Sort()

16、          Reverse()的用法:如果需要翻转AnimalArray数组中元素的顺序,可以使用Array.Reverse(AnimalArray);

17、          Sort()的用法:如果需要将AnimalArray数组中元素的顺序按照字母顺序重新排列,就可以使用Array.Sort(AnimalArray);

18、          数组列表代码示例:见Chap11/rm366_sorted_array.aspx

19、          在这段代码中应注意:

(1)        元素在下拉列表当中显示的位置与其在数组中存储的位置一致

(2)        所有的集合都能够成为数据源!

(3)        Myddl.DataSource=AnimalArray;表示下拉列表服务器控件可以到数组中获取它的数据

(4)        Myddl.DataBind();表示将下拉列表控件绑定到(即配置为使用)指定的数据源

20、          使用数组的优缺点

(1)        易于使用:可用于执行简单的线性列表

(2)        元素修改速度快:因为很容易定位一个元素

(3)        元素移动速度快:容易从头到尾迭代每个元素

(4)        可以指定元素的类型:可以创建一个数组,存储任何类型的对象,.NET可以确保只把这中类型的对象添加到数组中

(5)        长度固定:数组不能自动改变其长度

(6)        很难插入元素:插入元素过程复杂

21、          集合相对于数组的优势:

(1)        集合中的项可以不指定数量

(2)        任何对象在集合中的位置都是可以变化的

22、          集合与数组的区别:

(1)        集合在System.Collections名称空间中定义

(2)        数组在System.Array名称空间中定义

(3)        集合和数组都继承自ICollection接口

23、          几个最常用的集合类:ArrayListHashtableSortedList

24、          System.Collections.ArrayList类是一个特殊的数组,提供了标准数组的System.Array类中没有的功能,如可以根据增加或删除元素,动态改变数组的长度等

25、          ArrayList的优缺点:

(1)        支持自动改变长度:创建ArrayList实例的时候,不需要指定数组的范围,增加元素的时候,数组会自动确保有足够的空间

(2)        插入和删除元素时很灵活:仅需指定插入位置和待删除元素的位置即可

(3)        性能和速度较差:ArrayList的灵活性是以牺牲性能为代价的

26、          使用ArrayList的代码示例:Chap11/rm370_arraylist.aspx

27、          在这段代码中应注意:

(1)        在初始化ArrayList实例的时候,没有指定新ArrayList实例的长度,也没有指定ArrayList实例的数据类型

(2)        可以使用Insert()方法在ArrayList指定位置插入元素

(3)        可以使用Remove()RemoveAt()方法在ArrayList中删除指定的元素

28、          System.Collections.Hashtable类提供了把对象绑定为“键/值对”来执行操作的功能。Hashtable不必使用数字索引,键可以使用各种对象类型,值可以是任何类型的对象

29、          Hashtable的优缺点:

(1)        自由添加和删除元素,不必受长度限制

(2)        提供快速查找功能

(3)        性能和速度较差:比ArrayList更慢

(4)        键必须是惟一的

(5)        没有有效的排序:Hashtable中元素的排序是由.NET内部机制确定的,但使用键或值是不能排序的

30、          使用Hashtable的代码示例:Chap11/rm375_hashtable.aspx

31、          在这段代码中应注意:

(1)        键是区分大小写的

(2)        注意在foreach迭代过程中使用的临时对象是DicrionaryEntry对象

(3)        在新的Hashtable实例初始化完成后,键和值就都已经确定了

(4)        ListItem的对象完成了“将键/值对绑定在一起”的操作

(5)        ListItem的对象将此绑定后的元素赋予每一个dropdownlistItem,而dropdownlist可以使用dropdownlist.SelectedItem.Value访问此元素的键(Key值)或使用dropdownlist.SelectedItem.Text访问此元素的值(Value值)

32、          SortedList也是一个存储键/值对的集合,在该集合中也可以插入或删除项,也可以对项进行有效的排序

33、          SortedList中的项按照“键”来排序,而不是“值”

34、          使用SortedList的代码示例:Chap11/rm379_sortedlist.aspx

35、          在这段代码中应注意:

(1)        Item.Key.ToString()Item.Value.ToString()赋值的问题上,依然是可以交换的,不会产生错误,但可能会是不符合实际需要的结果

(2)        只要SortedList确定了,那么其Key的顺序就确定了,就等于在dropdownlist实例中的排列顺序确定了