三:使用集合组织相关数据

集合概念:

ArrayList:非常类似于数组,也有人称他为数组的列表.ArrayList可以动态维护,数组的容量是固定的 和数组类似,ArrayList中存储的是数据成为元素,ArrayList可以保存的元素就是ArrayList 的容量,其默认初始容量为0;可以通过索引访问ArrayList中的元素,索引从0开始

ArrayList是动态维护的

代码:

命名空间:

using System.Collections

//创建容量为0的ArrayList对象

ArrayList students =new ArrayList();

//创建容量为5的ArrayList对象

ArrayList teacher =new ArtrayList(5);

ArrayList 的属性及方法:

属性:

Count   获取ArrayList中的实际包含的元素数

方法:

Add: 将对象添加到ArrayList的结尾处

RemoveAt: 移除ArrayList指定索引处的元素

Remove: 从ArrayList中移除特定的对象

Clear: 从ArrayList中移除所有的元素

 #region 01.集合使用
ArrayList list = new ArrayList();
//1.1 仍数据进去 逻辑思维
list.Add("小娃娃"); list.Add("大娃娃"); list.Add("中娃娃");
//1.2遍历集合
foreach (string item in list) //自动迭代 有一个迭代器
{
Console.WriteLine("item");
}
//1.3 删除数据: //方式1:下标
list.RemoveAt();
//方式2:根据内容删除
list.Remove("小娃娃");
foreach (string item in list)
{
Console.WriteLine("item");
}
//判断某个元素是否存在:
bool flag = list.Contains("娃娃");
if (flag)
{
Console.WriteLine("存在");
}
else {
Console.WriteLine("不存在");
}
#endregion

Hashtable:

数据通过键(Key)和值(Value)来组织的

命名空间:

using System.Collections

Hashtable的属性及方法:

属性:

Count:获取包含在Hashtable中键/值对的数目

Keys:获取包含在Hashtable中键的集合

Value:获取包含在Hashtable中值的集合

方法:

Add();将指定的键和值添加到Hashtable中

Remove();移除带有特定键的元素

clear();从Hashtable中移除所有的元素

  #region 01.双列集合Hashtable(哈希表)
Hashtable table = new Hashtable();
table.Add("ICBC", "工商银行");
table.Add("ABC", "农业银行");
table.Add("CBC", "中国建设银行"); //根据key获取value
object bangName = table["ICBC"];
Console.WriteLine(bangName);
Console.WriteLine("======================"); //遍历的手段 //foreach for 因为Hashtable 只有key没有索引,for通过下标取值
//Value 方式一:通过Key取去value;
foreach (object key in table.Keys)
{
Console.WriteLine(key);
//索引器
Console.WriteLine(table[key]);
}
//直接Value,如果我们能够拿到所有的集合
Console.WriteLine("======================");
foreach (object value in table.Values)
{
Console.WriteLine(value);
}
//key+value迭代,一次拿到的是key+value的组合
Console.WriteLine("======================");
foreach (DictionaryEntry item in table)
{
Console.WriteLine("");
Console.WriteLine(item.Key);
Console.WriteLine(item.Value); }
Console.ReadLine(); #endregion

泛型和泛型集合:

泛型集合:

语法:

List <T>  对象名 =new List <T>();

代码:
//建立工程师员工集合
List <SE> engineers =new List <SE>();
//初始化三个工程师员工
SE Jack =new SE();
//属性赋值省略
SE joe =new SE();
//属性赋值省略
SE ema =new SE();
//属性赋值省略
//创建PM对象
PM pm =new PM();
//添加元素:
engineers.Add(Jack );
engineers.Add(joe );
engineers.Add(ema );
//[engineers.Add(PM);(添加一个项目经理对象,编译立即报错)]
打印集合中的元素数目:
Messagebox.show(string .Format("部门共包括{0}个工程师。",engineers .Count.Tostring()));
通过Key集合中的元素数目;
SE engineers =engineers [""];
MessageBox.Show(engineers .SayHi());
通过Key删除:
engineers .Remove("");
打印集合中的元素数目:
Messagebox.show(string .Format("部门共包括{0}个工程师。",engineers .Count.Tostring()));
//遍历:
foreach(SE se in engineers .Values ){
//遍历时无须类型转换
MessageBox。show(se.SayHi());
}
 
  //#region 02.集合初始化器
//ArrayList list2 = new ArrayList()//集合初始化
//{
// new SE (){Name ="张靓颖",age=20},//对象初始化
// new SE()
//};
//#endregion //#region 泛型集合先导课程 //List<SE> list = new List<SE>();
//SE se = new SE();
//se.Name= "比尔.盖茨";
//SE se2 =new SE();
//se2.Name = "李彦宏";
//list.Add(se);
//list.Add(se2 );
//foreach (SE item in list)
//{
// Console.WriteLine(item.Name);
//}
//Console.ReadLine(); //#endregion

List<T>和arrayList()的区别:

异:

ist<T>                                                                                                         arrayList()

1:对所保存的元素进行类型的约束                                                       可以增加任何类型

2:添加/读取值类型元素的无须拆箱和装箱                                               添加/读取值类型元素的需要拆箱和装箱

相同点:1:通过索引访问集合中的元素

2:添加的元素方法相同

3:删除元素的方法相同

Dictionary<k,V>   和Hashtable的区别:

不同点:

Dictionary<k,V>                                                                                          Hashtable

1:对所保存的元素进行约束                                                                   可以增加任何类型

2:添加/读取值类型元素的无须拆箱和装箱                                               添加/读取值类型元素的需要拆箱和装箱

相同点:

1:通过Key获取Value

2:添加的元素方法相同

3:删除元素的方法相同

4:遍历方法相同

S2 深入.NET和C#编程 三:使用集合组织相关数据的更多相关文章

  1. 【读书笔记】.Net并行编程(三)---并行集合

    为了让共享的数组,集合能够被多线程更新,我们现在(.net4.0之后)可以使用并发集合来实现这个功能.而System.Collections和System.Collections.Generic命名空 ...

  2. .Net多线程 并行编程(三)---并行集合

    为了让共享的数组,集合能够被多线程更新,我们现在(.net4.0之后)可以使用并发集合来实现这个功能. 而System.Collections和System.Collections.Generic命名 ...

  3. Linux网络编程(三)

    Linux网络编程(三) wait()还是waitpid() Linux网络编程(二)存在客户端断开连接后,服务器端存在大量僵尸进程.这是由于服务器子进程终止后,发送SIGCHLD信号给父进程,而父进 ...

  4. Java并发编程三个性质:原子性、可见性、有序性

      并发编程 并发程序要正确地执行,必须要保证其具备原子性.可见性以及有序性:只要有一个没有被保证,就有可能会导致程序运行不正确  线程不安全在编译.测试甚至上线使用时,并不一定能发现,因为受到当时的 ...

  5. Python黑帽编程 4.1 Sniffer(嗅探器)之数据捕获(上)

    Python黑帽编程 4.1 Sniffer(嗅探器)之数据捕获(上) 网络嗅探,是监听流经本机网卡数据包的一种技术,嗅探器就是利用这种技术进行数据捕获和分析的软件. 编写嗅探器,捕获数据是前置功能, ...

  6. JAVA:三种集合LIST、SET、MAP

    1. 集合框架介绍 我 们知道,计算机的优势在于处理大量的数据,在编程开发中,为处理大量的数据,必须具备相应的存储结构,数组可以用来存储并处理大量类型相同的数 据,但是会发现数组在应用中的限制:数组长 ...

  7. IT视频课程集(包含各类Oracle、DB2、Linux、Mysql、Nosql、Hadoop、BI、云计算、编程开发、网络、大数据、虚拟化

    马哥Linux培训视频课程:http://pan.baidu.com/s/1pJwk7dp Oracle.大数据系列课程:http://pan.baidu.com/s/1bnng3yZ 天善智能BI培 ...

  8. 【软件构造】第三章第三节 抽象数据型(ADT)

    第三章第三节 抽象数据型(ADT) 3-1节研究了“数据类型”及其特性 ; 3-2节研究了方法和操作的“规约”及其特性:在本节中,我们将数据和操作复合起来,构成ADT,学习ADT的核心特征,以及如何设 ...

  9. EF3:Entity Framework三种开发模式实现数据访问

    前言 Entity Framework支持Database First.Model First和Code Only三种开发模式,各模式的开发流程大相径庭,开发体验完全不一样.三种开发模式各有优缺点,对 ...

随机推荐

  1. 微信原始demo

    有可能下载最新的demo下载不到这个原版的精简demo了. 这里为大家提供一下.以下代码为原始未改动代码   01 02 03 04 05 06 07 08 09 10 11 12 13 14 15 ...

  2. 十大经典排序算法的JS版

    前言 个人博客:Damonare的个人博客 如遇到问题或有更好的优化方法,可以: 提issue给我 或是pull requests 我都会看到并处理,欢迎Star. 这世界上总存在着那么一些看似相似但 ...

  3. XAMPP重要文件目录及配置

    一.XAMPP 的安装过程 1:下载XAMPP 的 Linux 版 (1.7.4) http://www.apachefriends.org/en/xampp-linux.html#374 2:安装( ...

  4. S2b只适合于电商吗?

    万物互联时代,任何产业蓬勃发展都离不开互联网,从B2M.B2B.B2C.C2C.M2M,层出不穷的商业模式都让人眼花缭乱,最近还推出了s2b这个全新的模式. S代表着大的供应平台,它将更好地赋能给更多 ...

  5. 基于Abp的WebApi容器

    简述 对 Abp的动态web api的改造过程 注册 1. 首先通过反射将<服务类型>通过ApiControllerBuilder 构建成成 DynamicApiControllerInf ...

  6. SQL_Server 学习笔记(一)

    一:SQL基础 1 SQL SELECT DISTINCT 语法 SELECT DISTINCT Company FROM Orders 2.TOP SELECT TOP number|percent ...

  7. 在CentOS上为Docker开启SELinux

    a { color: #4183C4; text-decoration: none } a:hover { text-decoration: underline } ul,ol { padding-l ...

  8. Android自己定义组件之日历控件-精美日历实现(内容、样式可扩展)

    需求 我们知道.Android系统本身有自带的日历控件,网络上也有非常多开源的日历控件资源.可是这些日历控件往往样式较单一.API较多.不易于在实际项目中扩展并实现出符合详细样式风格的,内容可定制的效 ...

  9. 数据从文件导入Elasticsearch

    1.资源准备 1.数据文件:accounts.json 2.索引名称:bank 3.数据类型:account 4.批量操作API:bulk 2.导入数据 curl -XPOST 'localhost: ...

  10. 让intellij idea 14 支持ES6语法

    用eclipse做前端开发,用到了webpack,结果各种依赖导致软件卡的一比,简直不能动!虽然在同事的帮忙下,修改了一下配置,但仍然卡的没脾气.改用intellij idea 14解决了卡的问题,但 ...