第一章 Collections 类、泛型类和Timing类概述

1.1群集(collection)的定义



  群集是一种结构化的数据类型。存储数据,并且提供数据的添、删、改操作,以及对群集不同属性值的设置与返回操作。

  群集分为两类:线性与非线性群集。

  线性群集是一张元素列表,表中元素顺次相连。(1、2、3、4)计算机世界中数组为线性群集。

  非线性群集所包含的元素在群集内没有位置次序之分。(2,3,6,1)计算机世界中 树、堆、图和集都是非线性群集。


1.2群集(collection)的描述

  在两种主要的群集类中有几个子类别。线性的群集可能是直接存取群集,也可能是顺序存取的群集。而线性的群集既可以是层次群集,也可以是组群集。

1.2.1直接存取群集(collection)

  直接存取集群最常见的实例就是数组。这里把数组定义为具有相同数据类型的元素群集,而且所有数组元素可通过索引直接进行存取访问(Item[0]、Item[1]、Item[2])

  数组可以是静态的,这样当声明数组的时候便于针对程序长度来固定指定元素的数量。数组也可以是动态的,通过ReDim或者ReDim Preserve 语句就可以增加数组元素的数量。(注意此方法适用于VB,C#请使用Array.Resize(obj,n))

  在c#语言中,数组不只是内置的数据类型,它还是一种类。

  我们可以用数组类存储一个线性群集。向数组添加新元素很容易,只需要简单的吧新元素放置在数组尾部。但是,在数组中插入一个元素就不那么高效了。因为要给插入的元素空出位置,所以必须按顺序移动数组元素。从数组的尾部删除一个元素也很效率,但是删除指定任意位置的元素就没有那么效率了。

  字符串是直接存取群集的另外一种类型。字符串是字符的群集。和存取数组元素的方式一样也可以基于字符串的索引对其进行存取。在C#语言中,字符串也是作为类对象来实现的。这个类包含一个在字符串上执行标准操作的庞大的方法集合,其中操作有串连接、返回子串、插入字符、移除字符等等。

  C#字符串是不可变的。意味着一旦初始化就不能再改变。当要修改字符串的时候,不是改变原始字符串而是创建一个字符串的副本。在某些情况下这种行为可能会导致性能急剧下降,所以.NET框架提供了StringBuilder类来让用户处理可变字符串。

  结构(在其他编程语言中也被称为记录)是最后一种直接存取的群集类型。结构是一种复合数据类型。它所包含的数据可能拥有许多不同的数据类型。由于把这些数据的值分别存储在分散的变量内是很容易变混淆的,所以编程语言采用结构来存储此类数据。

  C#语言的结构所增加的强大能力就是为执行存储在数据上的操作定义了方法。尽管不能从结构继承或推导出一种新的类型,但是这种做法使得结构在某些地方很像一个类。

using System;
public struct Name
{
     private string fname, mname, lname;
     public Name(string first, string middle, string last)
     {
                fname = first;
                mname = middle;
          lname = last;
     }
     public string firstName
     {
                get      { return fname; }
                set     { fname = firstName; }
     }
     public string middleName
     {
                get   { return mname; }
                set   { mname = middleName; }
     }
     public string lastName
     {
                get   { return lname; }
                set    { lname = lastName; }
     }
     public override string ToString()
     {
                return (String.Format("{0} {1} {2}", fname, mname,lname));
     }
     public string Initials()
     {
                return (String.Format("{0}{1}{2}", fname.Substring(0, 1),mname.Substring(0, 1), lname.Substring(0, 1)));
     }
}
public class NameTest
{
     static void Main()      {
                Name myName = new Name("Michael", "Mason", "McMillan");
                string fullName, inits;
           fullName = myName.ToString();
                inits = myName.Initials();
                Console.WriteLine("My name is {0}.", fullName);
                Console.WriteLine("My initials are {0}.", inits);
     }
}
 

时间: 2024-11-10 18:49:28

第一章 Collections 类、泛型类和Timing类概述的相关文章

《Python CookBook2》 第一章 文本 - 测试一个对象是否是类字符串 && 字符串对齐

测试一个对象是否是类字符串 任务 有时候需要测试一个对象,尤其是当你在写一个函数或者方法的时候,经常需要测试传入的参数是否是一个字符串. 解决方案 利用内建的isinstance 和basestring 来简单快速地查询某个对象是否是字符串或者是Unicode 对象方法,如下: 代码: >>> def isAString(aaa): return isinstance(aaa,basestring) 运行结果: >>> isAString('aaa') True 字符串

Android深度探索(卷1)HAL与驱动开发 第一章 Android系统移植与驱动开发概述 读书笔记

Android深度探索(卷1)HAL与驱动开发 第一章 Android系统移植与驱动开发概述 读书笔记 本章是 Android系统移植与驱动开发概述性的具体讲解.首先,Android被分为了四层架构.在最底层的是Linux内核 .然后分别是C/C++代码库.Android SDK A和应用程序.而Android的移植又分为系统移植和应用移植.系统移植要实现Android操作系统在其他硬件平台上运行起来,其中的关键是Linux的内核.内核必须要完成对平台上运行的各个硬件的识别.所以这就需要Linu

第一章 Android系统移植与驱动开发概述 心得体会

第一章 Android系统移植与驱动开发概述 心得体会 通过学习Android深度探索(卷1)HAL与驱动开发的第一章Android系统移植与驱动开发,我对android驱动开发与移植概念有了一个整体且系统的把握.在本章中我主要学到了一下的知识 1.Android的系统架构分为Linux内核.C/C++代码库.Android SDK API.应用程序四层. 其中重点讲解第一层 Linux 内核.这一层主要包括Linux的驱动程序以及内存管理.进程管理.电源管理等程序. 2. Android移植可

第一章 Android系统移植与驱动开发概述 心得笔记

1.想要在自己的设备上运行Android,必须为自己的设备开发特定软件,这个为特定设备定制Android的过程被称为“移植”. 2.Android的系统构架分为:最底层Linux内核,和其他Linux系统的差异很小:再上一层是C/C++代码库:再上一层是Android SDK API,这一层是用java编写的Library:最上层是应用程序,这一层所有用户都要接触到,所有的Android应用程序. 3.Android移植分为应用移植和系统移植,主要工作是移植Linux驱动和移植HAL(硬件抽象层

《Android深度探索卷一》第一章Android系统移植与驱动开发概述。

<Android深度探索>第一章讲的是Android系统移植与驱动开发概述.这一章节将对Android以及Linux驱动做一个总体的介绍. Android是一个非常优秀的的嵌入式操作系统.经过几年的发展和演进,Android已经形成了非常完善的系统架构.Android的系统架构分为四层,如下图 Android移植可分为两部分:应用移植和系统移植. Android系统移植是指让Android操作系统在某一个特定硬件平台上运行.使一个操作系统在特定硬件平台上运行的一个首要条件就是该操作系统支持硬件

第一章 Android系统移植与驱动开发概述

本书第一章首先简单概要地介绍了关于Android系统移植和驱动开发的相关内容. 所谓“移植”是指为特定的自己的设备,如手机定制Android的过程.自己开发一些程序(移植)装载在设备上,使得Android系统可以识别设备中的蓝牙,WiFi等,这样就可以使用这些功能了.这些程序大多是支持各种硬件设备的Linux驱动程序. 这一章中介绍了许多在进行Android系统移植和驱动开发前要了解的概念以及要做的准备.接下来主要说的是在Android系统移植过程中的主要工作. Android移植分为两部分:应

第一章Android系统移植与驱动开发概述

Android系统架构——四层 第一层:Linux内核:Android是基于Linux内核的,这一层主要包括Linux的驱动程序以及内存管理.进程管理.电源管理等程序.Android使用Linux2.6作为其内核. 第二层:C/C++代码库:这一层主要包括使用C/C++编写的代码库(Linux下的.so文件以及嵌入到APK程序中的NDK代码),也包括Dalivk虚拟机的运行时(Rumtime). 第三层:Android SDK API:直接面向应用程序的Java API层,用Java编写的各种L

第一章 安卓系统移植与驱动开发概述-读书笔记

这一章是学习linux驱动的第一道门,对android以及linux驱动做了一个总体介绍,使我对开发linux驱动有了一个感性的认识,并且为更好的学习linux驱动的方法和技巧打下了基础. 1.了解Android系统架构:在这一节我学到Android系统分为4层:Linux内核.Android核心库.应用程序框架.应用程序等. 2.了解Android系统移植:Android移植分为两部分:应用移植和系统移植,由于不同硬件平台的差异,Android SDK API也有可能存在差异,所以为了保证应用

第一章 Andorid系统移植与驱动开发概述 - 读书笔记

Android驱动月考1 1.Android系统的架构: (1)Linux内核,Android是基于Linux内核的操作系统,并且开源,所以Android与Ubuntu等操作系统的差别很小,并且这一层主要是操作系统核心,包括进程线程的调度和内存.电池管理,都是一些常驻内存的核心服务. (2)C/C++代码库,这一层主要都是.so文件,.so文件常见在编译之后产生,包括PHP的运行so.同时这一层也包含虚拟机的Runtime. (3)Android SDK API,安卓的SDK的接口,由Java编