集合技术:

用于“批量数据”管理的重要技术,是数组技术的替代技术!

与数组技术的对比:

数组:只提供“存储的空间”,但缺乏各种数据管理措施!

集合:在数组的基础上,提供丰富的“属性”和“方法”,来方便我们对数据的访问,且不限定长度!

典型“集合类型”:

传统集合  ----- ArrayList、Hashtable (灵活、需要装拆箱、提取数据容易拆箱错误)

泛型集合  -----List<T>、      Dictionary<K,V>(减少灵活性,确保稳定性且提高效率)

集合中,重要的属性和方法:

----- ArrayList aList = new ArrayList(100);//一般不指定长度

泛型集合 的使用(List<T>):

属性、方法:与传统集合ArrayList一样,唯一不同的是,限定数据类型,不需再进行装、拆箱!

List<T>的使用语法:

//初始化方式一:

_studens = new List<Student>();//1、准备容器

Student stu1 = new Student(); //2、创建学生对象

stu1.Name = "王小平";

stu1.Age = 20;

stu1.Sex = "男";

_studens.Add(stu1);//3、加入集合

//初始化方式二:

_studens = new List<Student>()

{

new Student(){Name="王军", Age=20, Sex="男"},

new Student(){Name="白小鹏",Age=30, Sex="男"},

new Student(){Name="刘丽",Age=18,Sex="女"}

};

//数据绑定方式一:BindingList

this.dataGridView1.DataSource =

new BindingList<Student>(_studens);

//数据绑定方式二:BindingSource

BindingSource source = new BindingSource();

source.DataSource = _studens;

this.dataGridView1.DataSource = source;

Dictionary<k,v>的使用语法:

//初始方式一

_student = new Dictionary<string, Student>();

Student stu1 = new Student();

stu1.Name = "王大力";

stu1.Age = 23;

stu1.Sex = "男";

_student.Add(stu1.Name, stu1);

//初始方式二(集合初始化化器)

_student = new Dictionary<string, Student>()

{

{"王大力",new Student(){Name="王大力",Age=23,Sex="男"}},

{"白军",new Student(){Name="白军",Age=21,Sex="男"}},

{"李白",new Student(){Name="李白",Age=27,Sex="男"}}

};

//数据绑定

BindingSource source = new BindingSource();

source.DataSource = _student.Values;

this.dataGridView1.DataSource = source;

ArrayList集合,替代了数组,提供大量的属性和方法来方便用户的操作!但是,当要元素搜索定位时,还是只有通过“循环遍历”的方式,如何优化呢?

----- 不在将数据“顺序存放”,而是在数据存放前,通过其“能够标识其身份的信息”(key键),通过公式(哈希算法)计算出它的存放地址!这样的好处就是,当需要查找某一元素时,只需要知道(key键),就可以通过哈希算法,再次算出它的存放地址,从而快速定位元素。【Hashtable】

深入.net(集合)的更多相关文章

  1. java基础集合经典训练题

    第一题:要求产生10个随机的字符串,每一个字符串互相不重复,每一个字符串中组成的字符(a-zA-Z0-9)也不相同,每个字符串长度为10; 分析:*1.看到这个题目,或许你脑海中会想到很多方法,比如判 ...

  2. .Net多线程编程—并发集合

    并发集合 1 为什么使用并发集合? 原因主要有以下几点: System.Collections和System.Collections.Generic名称空间中所提供的经典列表.集合和数组都不是线程安全 ...

  3. 一起学 Java(三) 集合框架、数据结构、泛型

    一.Java 集合框架 集合框架是一个用来代表和操纵集合的统一架构.所有的集合框架都包含如下内容: 接口:是代表集合的抽象数据类型.接口允许集合独立操纵其代表的细节.在面向对象的语言,接口通常形成一个 ...

  4. 编写高质量代码:改善Java程序的151个建议(第5章:数组和集合___建议75~78)

    建议75:集合中的元素必须做到compareTo和equals同步 实现了Comparable接口的元素就可以排序,compareTo方法是Comparable接口要求必须实现的,它与equals方法 ...

  5. java基础_集合List与Set接口

    List接口继承了Collection的方法  当然也有自己特有的方法向指定位置添加元素   add(索引,添加的元素); 移除指定索引的元素   remove(索引) 修改指定索引的元素   set ...

  6. Java基础Collection集合

    1.Collection是所有集合的父类,在JDK1.5之后又加入了Iterable超级类(可以不用了解) 2.学习集合从Collection开始,所有集合都继承了他的方法 集合结构如图:

  7. 轻量级“集合”迭代器-Generator

    Generator是PHP 5.5加入的新语言特性.但是,它似乎并没有被很多PHP开发者广泛采用.因此,在我们了解PHP 7对Generator的改进之前,我们先通过一个简单却显而易见的例子来了解下G ...

  8. Asp.net MVC 传递数据 从前台到后台,包括单个对象,多个对象,集合

    今天为大家分享下 Asp.net MVC 将数据从前台传递到后台的几种方式. 环境:VS2013,MVC5.0框架 1.基本数据类型 我们常见有传递 int, string, bool, double ...

  9. 这些.NET开源项目你知道吗?.NET平台开源文档与报表处理组件集合(三)

    在前2篇文章这些.NET开源项目你知道吗?让.NET开源来得更加猛烈些吧 和这些.NET开源项目你知道吗?让.NET开源来得更加猛烈些吧!(第二辑)中,大伙热情高涨.再次拿出自己的私货,在.NET平台 ...

  10. python 数据类型 --- 集合

    1. 注意列表和集合的区别 set 列表表现形式: list_1 = [1,3,4];  集合表现形式:set_1= set() list_1 = [1,2,3,4,23,4,2] print(lis ...

随机推荐

  1. Log4net 日志使用介绍

    概述 Log4net 有三个主要组件:loggers,appenders 和 layouts.这三个组件一起工作使得开发者能够根据信息类型和等级(Level)记录信息,以及在运行时控制信息的格式化和信 ...

  2. 日志插件 log4net 的使用

    文本格式说明 可以记载的日志类别包括:FATAL(致命错误).ERROR(一般错误).WARN(警告).INFO(一般信息).DEBUG(调试信息). 文本参数说明 %m(message):输出的日志 ...

  3. WinForm打印

    WinForm打印要用打印控件: PageSetupDialog:打印设置对话框 PrintDialog:打印对话框 PrintDocument:要打印的对象,非常重要 PrintPreviewCon ...

  4. 孙鑫MFC学习笔记4:MFC画图

    1.画线方法 *1.捕获鼠标按下和弹起消息,获取两个点 *2.消息响应,画线 2.在CMainFrame类中的鼠标左键事件得不到响应的原因是CNameView覆盖了CMainFrame 3.注释宏 4 ...

  5. 【Java每日一题】20161028

    package Oct2016; public class Ques1028 { public static void main(String[] args){ new B().out(); // 输 ...

  6. 程序员下一门要学的编程语言Swift

    基于PHP是世界上最好的编程语言这个真理,我一直认为Hack才是程序员要学的下一门编程语言. 但今天看到InfoQ放出的新闻:"Google或许会将Swift编程语言纳入Android平台并 ...

  7. jinfo命令的使用

    jinfo命令 该命令可以打印出java进程的配置信息:包括jvm参数,系统属性等用法: jinfo [ option ] pid jinfo [ option ] executable core j ...

  8. spring mvc WebArgumentResolver不生效

    WebArgumentResolver: SPI for resolving custom arguments for a specific handler method parameter. Typ ...

  9. 十一个行为模式之责任链模式(Responsible Chain Pattern)

    定义: 将具有相同接口的责任类串行在一起,解耦请求的发送者和处理者.沿着这条链进行请求,直到有对象处理它为止. 结构图: Handler:抽象处理类,定义了所有责任类处理方法的接口,不同的处理方法在子 ...

  10. Linux更改主机名-适用于abuntu

    今天复制了个ubuntu虚拟机,于是想更改下主机名以作区别.这是搜到的比较完整的资料,适用abuntu,不过其他linux系统还有待求证. 1.查看主机名 在Ubuntu系统中,快速查看主机名有多种方 ...