S2 深入.NET和C#编程 三:使用集合组织相关数据
三:使用集合组织相关数据
集合概念:
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#编程 三:使用集合组织相关数据的更多相关文章
- 【读书笔记】.Net并行编程(三)---并行集合
为了让共享的数组,集合能够被多线程更新,我们现在(.net4.0之后)可以使用并发集合来实现这个功能.而System.Collections和System.Collections.Generic命名空 ...
- .Net多线程 并行编程(三)---并行集合
为了让共享的数组,集合能够被多线程更新,我们现在(.net4.0之后)可以使用并发集合来实现这个功能. 而System.Collections和System.Collections.Generic命名 ...
- Linux网络编程(三)
Linux网络编程(三) wait()还是waitpid() Linux网络编程(二)存在客户端断开连接后,服务器端存在大量僵尸进程.这是由于服务器子进程终止后,发送SIGCHLD信号给父进程,而父进 ...
- Java并发编程三个性质:原子性、可见性、有序性
并发编程 并发程序要正确地执行,必须要保证其具备原子性.可见性以及有序性:只要有一个没有被保证,就有可能会导致程序运行不正确 线程不安全在编译.测试甚至上线使用时,并不一定能发现,因为受到当时的 ...
- Python黑帽编程 4.1 Sniffer(嗅探器)之数据捕获(上)
Python黑帽编程 4.1 Sniffer(嗅探器)之数据捕获(上) 网络嗅探,是监听流经本机网卡数据包的一种技术,嗅探器就是利用这种技术进行数据捕获和分析的软件. 编写嗅探器,捕获数据是前置功能, ...
- JAVA:三种集合LIST、SET、MAP
1. 集合框架介绍 我 们知道,计算机的优势在于处理大量的数据,在编程开发中,为处理大量的数据,必须具备相应的存储结构,数组可以用来存储并处理大量类型相同的数 据,但是会发现数组在应用中的限制:数组长 ...
- IT视频课程集(包含各类Oracle、DB2、Linux、Mysql、Nosql、Hadoop、BI、云计算、编程开发、网络、大数据、虚拟化
马哥Linux培训视频课程:http://pan.baidu.com/s/1pJwk7dp Oracle.大数据系列课程:http://pan.baidu.com/s/1bnng3yZ 天善智能BI培 ...
- 【软件构造】第三章第三节 抽象数据型(ADT)
第三章第三节 抽象数据型(ADT) 3-1节研究了“数据类型”及其特性 ; 3-2节研究了方法和操作的“规约”及其特性:在本节中,我们将数据和操作复合起来,构成ADT,学习ADT的核心特征,以及如何设 ...
- EF3:Entity Framework三种开发模式实现数据访问
前言 Entity Framework支持Database First.Model First和Code Only三种开发模式,各模式的开发流程大相径庭,开发体验完全不一样.三种开发模式各有优缺点,对 ...
随机推荐
- 守护进程VS守护线程
守护(daemon)进程 引入: join()方法可以使一个进程运行完之后再执行下一个进程,而daemon()方法就是主进程的代码执行完毕之后,不需要等待子进程,立即终止子进程. join()方法和d ...
- 使用Xamarin开发手机聊天程序 -- 基础篇(大量图文讲解 step by step,附源码下载)
如果是.NET开发人员,想学习手机应用开发(Android和iOS),Xamarin 无疑是最好的选择,编写一次,即可发布到Android和iOS平台,真是利器中的利器啊!而且,Xamarin已经被微 ...
- springmvc对于JSON对象的处理
1.常见的json jar包,及其优缺点(开发中可以一起使用) json-lib 缺点:依赖第三方的包 jackson SpringMVC内置的json装换工具,依赖包较少 GSON ...
- 【前端】Util.js-ES6实现的常用100多个javaScript简短函数封装合集(持续更新中)
Util.js (持续更新中...) 项目地址: https://github.com/dragonir/Util.js 项目描述 Util.js 是对常用函数的封装,方便在实际项目中使用,主要内容包 ...
- SQL多表关联查询
在创建关系型数据表时,根据数据库范式的要求,为了降低数据的冗余,提供数据维护的灵活性 将数据分成多个表进行存储,实际工作当中,需要多个表的信息,需要将多个表合并显示 --内连接 selec ...
- 让你变懒的 Android Studio Live Templates
俗话说.不想偷懒的程序猿不是好程序猿.那么今天就教大家偷懒下! 先举个样例.我们在 Android 开发中输入 Toast ,然后会有例如以下例如以下的高速操作: 是不是非常方便? 有同学问,这不就是 ...
- More DETAILS! PBR的下一个发展在哪里?
最近几年图形学社区对PBR的关注非常高,也许是由于Disney以及一些游戏引擎大厂的助推,也许是因为它可以被轻松集成进实时渲染的游戏引擎当中,也许是因为许多人发现现在只需要调几个参数就能实现具有非常精 ...
- Centos 7 安装 PostgreSQL
本文只讲PostgreSQL在CentOS 7.x 下的安装,其他系统请查看:https://www.postgresql.org/download PostgreSQL 所用版本为:PostgreS ...
- redis参数配置说明
参数说明redis.conf 配置项说明如下:1. Redis默认不是以守护进程的方式运行,可以通过该配置项修改,使用yes启用守护进程 daemonize no2. 当Redis以守护进程方式运行 ...
- selenium.common.exceptions.WebDriverException: Message: 'phantomjs' executab
该问题博主是在Mac环境遇到的,对应windows找对应解决方案解决即可. 问题原因: phantomjs环境配置有问题,要么是配置错误,要么是没有配置. 解决方案: 1.将下载解压好的phantom ...