第十一章 数组和集合对象.

Slides:



Advertisements
Similar presentations
四資二甲 第三週作業 物件導向程式設計.
Advertisements

Tool Command Language --11级ACM班 金天行.
第五章 字符串.
Oracle数据库 Oracle 子程序.
项目:贪吃蛇游戏设计 工作任务三:块类(Block)设计 工作任务四:蛇类(Snake)设计
第14章 c++中的代码重用.
C++中的声音处理 在传统Turbo C环境中,如果想用C语言控制电脑发声,可以用Sound函数。在VC6.6环境中如果想控制电脑发声则采用Beep函数。原型为: Beep(频率,持续时间) , 单位毫秒 暂停程序执行使用Sleep函数 Sleep(持续时间), 单位毫秒 引用这两个函数时,必须包含头文件
第10讲 Java面向对象编程基础(4) 教学目标 主要内容.
第九章 字符串.
第5章 异常处理 王德俊 上海交通大学继续教育学院.
C#程序设计 c# programming 泛型 C#程序设计课程组.
第四章 在 C# 中实现 OOP 概念.
Hadoop I/O By ShiChaojie.
OpenMP简介和开发教程 广州创龙电子科技有限公司
C#程序设计 c# programming 多线程 C#程序设计课程组.
第2章回顾 标识符:不用记,动手 关键字:if, else, switch, for, while, do, break, continue, void, …… 局部变量和成员变量 ①变量作用域 ②内存布局 基本数据类型 ①4类8种 ②互相转换 流程控制语句 ①分支 if……else, switch.
管理信息结构SMI.
第4章 数组和集合 4.1 一维数组 4.2 二维数组 4.3 Array类 4.4 交错数组 4.5 ArrayList类
走进编程 程序的顺序结构(二).
辅导课程六.
Zhao4zhong1 (赵中) C语言指针与汇编语言地址.
Zhao4zhong1 (赵中) C语言指针与汇编语言地址.
第2章 基本数据类型 王德俊 上海交通大学继续教育学院.
本节内容 模拟线程切换 视频提供:昆山滴水信息技术有限公司 官网地址: 论坛地址: QQ交流 :
第 十二 章 C# 中的文件处理.
泛型委托 泛型接口、方法和委托.
用event class 从input的root文件中,由DmpDataBuffer::ReadObject读取数据的问题
顺序表的插入.
宁波市高校慕课联盟课程 与 进行交互 Linux 系统管理.
宁波市高校慕课联盟课程 与 进行交互 Linux 系统管理.
第7章 繼承/多型/介面 注意: 本投影片僅供本書上課教師使用,非經同意請勿上網轉載或供拷貝.
从zval看PHP变量
辅导课程八.
C++语言程序设计 C++语言程序设计 第七章 类与对象 第十一组 C++语言程序设计.
Ch 08 陣列 視窗程式設計.
简单介绍 用C++实现简单的模板数据结构 ArrayList(数组, 类似std::vector)
$9 泛型基础.
第五章 介面/集合/泛型 注意: 本投影片僅供本書上課教師使用,非經同意請勿上網轉載或供拷貝.
顺序表的删除.
第二章 Java基本语法 讲师:复凡.
VB与Access数据库的连接.
<编程达人入门课程> 本节内容 内存的使用 视频提供:昆山爱达人信息技术有限公司 官网地址: 联系QQ: QQ交流群: ,
Select模型 本节内容 视频提供:昆山爱达人信息技术有限公司 视频录制:yang 官网地址:
本节内容 Win32 API中的宽字符 视频提供:昆山爱达人信息技术有限公司 官网地址: 联系QQ: QQ交流群 : 联系电话:
第4章 Excel电子表格制作软件 4.4 函数(一).
iSIGHT 基本培训 使用 Excel的栅栏问题
第二章 Java基本语法 讲师:复凡.
3.16 枚举算法及其程序实现 ——数组的作用.
本节内容 结构体 视频提供:昆山爱达人信息技术有限公司 官网地址: 联系QQ: QQ交流群 : 联系电话:
本节内容 文件系统 视频提供:昆山爱达人信息技术有限公司 官网地址: 联系QQ: QQ交流群 : 联系电话:
Chapter 18 使用GRASP的对象设计示例.
多层循环 Private Sub Command1_Click() Dim i As Integer, j As Integer
C++语言程序设计 C++语言程序设计 第六章 指针和引用 第十一组 C++语言程序设计.
辅导课程十五.
龍老師我不會Debug QQ.
第二章 Java基本语法 讲师:复凡.
本节内容 C语言的汇编表示 视频提供:昆山爱达人信息技术有限公司 官网地址: 联系QQ: QQ交流群 : 联系电话:
第二章 Java基本语法 讲师:复凡.
本节内容 Windows线程切换_时钟中断切换 视频提供:昆山滴水信息技术有限公司 官网地址: 论坛地址: QQ交流 :
基于列存储的RDF数据管理 朱敏
C++语言程序设计 C++语言程序设计 第一章 C++语言概述 第十一组 C++语言程序设计.
本节内容 动态链接库 视频提供:昆山爱达人信息技术有限公司 官网地址: 联系QQ: QQ交流群 : 联系电话:
C++语言程序设计 C++语言程序设计 第九章 类的特殊成员 第十一组 C++语言程序设计.
VB与Access数据库的连接.
本节内容 进程 视频提供:昆山爱达人信息技术有限公司 官网地址: 联系QQ: QQ交流群 : 联系电话:
使用ADO访问数据库 李宝智 BonizLee 课程 10564A
使用Fragment 本讲大纲: 1、创建Fragment 2、在Activity中添加Fragment
第二章 Java基本语法 讲师:复凡.
鄭士康 國立台灣大學 電機工程學系/電信工程研究所/ 資訊網路與多媒體研究所
学习目标 1、什么是列类型 2、列类型之数值类型.
Presentation transcript:

第十一章 数组和集合对象

回顾 线程是在共享内存空间中并发的多道执行路径 在 C# 中,是使用 System.Threading 命名空间中的 Thread 类来创建线程的 线程优先级可以更改为 ThreadPriority 枚举中定义的值 C# 中的 lock 关键字是实现线程同步的一种方法 同步的线程称为安全线程 除非绝对必要,否则不要创建线程安全的代码,因为添加不必要的锁定会降低性能

目标 使用System.Array 对象 理解集合对象的特点和优点 使用System.ArrayList 对象 使用哈希表对象

System.Array 简介 3-1 int score[ ] = new int[7]; 第一位学生的分数 score [0] 存储学员的分数 5 6 4 数 组 应用程序 7 int score[ ] = new int[7]; int score1; System.Console.ReadLine(score1) int score2; System.Console.ReadLine(score2) int score3; System.Console.ReadLine(score3) int score4; System.Console.ReadLine(score4) int score5; System.Console.ReadLine(score5) int score6; System.Console.ReadLine(score6) int score7; System.Console.ReadLine(score7) 第一位学生的分数 score [0] 3 第二位学生的分数 score [1] 2 第三位学生的分数 score [2] 第四位学生的分数 score [3] 1 第五位学生的分数 score [4] 第六位学生的分数 score [5] 在数组的术语中,元素表示数组中存储的值,数组长度指数组中存储的值的总数,数组秩指数组的总维数 第七位学生的分数 score [6]

可以执行各种操作,如存储、检索、排序和反转 System.Array 简介 3-2 数组定义:数据类型[ ] 数组名称; int[] MyArray = {1,2,3,4,5,6,7}; 如何简易地执行对数组的操作? System . Array MyArray[0], MyArray[1], MyArray[2]…………MyArray[6] 可以执行各种操作,如存储、检索、排序和反转 MyArray [0] = 604

System.Array 简介 3-3 System.Array Array是抽象的基类,提供 CreateInstance 方法来创建数组 Array obj = Array.CreateInstance(typeof(string),10);

System.Array 的属性和方法 方法 属性 Clear Length CopyTo Rank IsReadOnly BinarySearch Clear Length Copy CopyTo Rank CreateInstance GetLength IsReadOnly GetLowerBound GetValue IsFixedSize GetUpperBound IndexOf LastIndexOf Reverse SetValue Sort

将 objNames 实例化为字符串对象并且其中存放 5 个元素 示例 2-1 static void Main(string[] args) { //构建 objNames 数组 Array objNames = Array.CreateInstance (typeof(string),5); //初始化值 objNames.SetValue(“A",0); objNames.SetValue(“B",1); objNames.SetValue(“C",2); objNames.SetValue(“D",3); objNames.SetValue(“E",4); Console.WriteLine(“数组值"); for(int ctr = 0 ; ctr < 5; ctr++) Console.WriteLine(“元素 {0}: {1}",ctr+1, objNames.GetValue(ctr)); } 将 objNames 实例化为字符串对象并且其中存放 5 个元素 使用 SetValue() 方法存储字符串 使用 GetValue() 方法检索数组值

示例 2-2 课堂练习: 这段代码用For Each结构怎么写? Console.WriteLine(“\n数组中元素的总数是 {0}",objNames.Length.ToString()); //输出数组秩 Console.WriteLine("\n数组秩是 {0}",objNames.Rank.ToString()); //反转数组并输出 Array.Reverse(objNames); Console.WriteLine(“\n反转数组后"); for(int ctr = 0 ; ctr < 5; ctr++) { Console.WriteLine(“元素 {0}: {1}",ctr+1, objNames.GetValue(ctr)); } 显示 objNames数组的长度 显示 objNames数组秩 反转数组元素 反转后的数组元素列表 课堂练习: 这段代码用For Each结构怎么写?

思考和演示 使用: int[ ] A = {1,2,3,4,5,6} 和使用: B.CreateInstance (typeof(string),5) 创建的数组,A可以使用B所有的属性和方法吗? 教员演示两种数组的差别

System.Collections 简介 2-1 Employee 对象的集合 System.Collection ID 工作档案 ID 工作档案 ID 工作档案 ID 工作档案 职员 1 职员 3 职员 2 职员 4 对象组中元素个数未知,并且随时可能要循环、添加和移除

System.Collections 简介 2-2 类 接口 结构

Hashtable objFriendDetails = new Hashtable(); 属性 Count Keys Values 方法 Add GetEnumerator Remove Hashtable objFriendDetails = new Hashtable();

使用哈希表对象 教员演示使用哈希表的例子程序

ArrayList 类 2-1 ArrayList的特点 Array 类的容量或元素数是固定的,而 ArrayList 类的容量可以根据需要动态扩展。通过设置ArrayList.Capacity 的值可以重新分配内存和复制元素 使用 ArrayList 提供的方法可以同时添加、插入或移除一个范围内的元素 数组灵活性 可以设置数组的下界 数组可以有多个维 许多需要使用数组的实例都可以使用ArrayList

ArrayList 类 2-2 属性 Capacity 方法 Count Add Contains Insert Remove RemoveAt TrimToSize

简单的例子 ArrayList List = new ArrayList(); //给数组增加10个Int元素 for( int i=0;i<10;i++ ) List.Add(i); //..程序做一些处理 //将第6个元素移除 List.RemoveAt(5); //再增加3个元素 for( int i=0;i<3;i++ ) List.Add(i+20); //返回ArrayList包含的数组 Int32[] values = (Int32[])List.ToArray(typeof(Int32));

教员演示使用ArrayList的例子程序

总结 多数编程语言都提供数组这种数据结构,用以存储属于相同类型的多个数据元素 可以使用 Array 类的 CreateInstance 方法来创建Array对象,也可以直接定义数组对象 集合可用于管理在运行时动态创建的元素项 System.Collections 命名空间提供一组接口和类,让用户可以对一组数据元素执行各种集合操作 用户可以通过 HashTable 类将数据、键值作为一组来存储,这些数据是根据键值进行组织的 Array 类属于 System 命名空间,而 ArrayList 类属于 System.Collections 命名空间 ArrayList在Array的基础上提供了动态的特性