深入.net(集合)
集合技术:
用于“批量数据”管理的重要技术,是数组技术的替代技术!
与数组技术的对比:
数组:只提供“存储的空间”,但缺乏各种数据管理措施!
集合:在数组的基础上,提供丰富的“属性”和“方法”,来方便我们对数据的访问,且不限定长度!
典型“集合类型”:
传统集合 ----- 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(集合)的更多相关文章
- java基础集合经典训练题
第一题:要求产生10个随机的字符串,每一个字符串互相不重复,每一个字符串中组成的字符(a-zA-Z0-9)也不相同,每个字符串长度为10; 分析:*1.看到这个题目,或许你脑海中会想到很多方法,比如判 ...
- .Net多线程编程—并发集合
并发集合 1 为什么使用并发集合? 原因主要有以下几点: System.Collections和System.Collections.Generic名称空间中所提供的经典列表.集合和数组都不是线程安全 ...
- 一起学 Java(三) 集合框架、数据结构、泛型
一.Java 集合框架 集合框架是一个用来代表和操纵集合的统一架构.所有的集合框架都包含如下内容: 接口:是代表集合的抽象数据类型.接口允许集合独立操纵其代表的细节.在面向对象的语言,接口通常形成一个 ...
- 编写高质量代码:改善Java程序的151个建议(第5章:数组和集合___建议75~78)
建议75:集合中的元素必须做到compareTo和equals同步 实现了Comparable接口的元素就可以排序,compareTo方法是Comparable接口要求必须实现的,它与equals方法 ...
- java基础_集合List与Set接口
List接口继承了Collection的方法 当然也有自己特有的方法向指定位置添加元素 add(索引,添加的元素); 移除指定索引的元素 remove(索引) 修改指定索引的元素 set ...
- Java基础Collection集合
1.Collection是所有集合的父类,在JDK1.5之后又加入了Iterable超级类(可以不用了解) 2.学习集合从Collection开始,所有集合都继承了他的方法 集合结构如图:
- 轻量级“集合”迭代器-Generator
Generator是PHP 5.5加入的新语言特性.但是,它似乎并没有被很多PHP开发者广泛采用.因此,在我们了解PHP 7对Generator的改进之前,我们先通过一个简单却显而易见的例子来了解下G ...
- Asp.net MVC 传递数据 从前台到后台,包括单个对象,多个对象,集合
今天为大家分享下 Asp.net MVC 将数据从前台传递到后台的几种方式. 环境:VS2013,MVC5.0框架 1.基本数据类型 我们常见有传递 int, string, bool, double ...
- 这些.NET开源项目你知道吗?.NET平台开源文档与报表处理组件集合(三)
在前2篇文章这些.NET开源项目你知道吗?让.NET开源来得更加猛烈些吧 和这些.NET开源项目你知道吗?让.NET开源来得更加猛烈些吧!(第二辑)中,大伙热情高涨.再次拿出自己的私货,在.NET平台 ...
- python 数据类型 --- 集合
1. 注意列表和集合的区别 set 列表表现形式: list_1 = [1,3,4]; 集合表现形式:set_1= set() list_1 = [1,2,3,4,23,4,2] print(lis ...
随机推荐
- Log4net 日志使用介绍
概述 Log4net 有三个主要组件:loggers,appenders 和 layouts.这三个组件一起工作使得开发者能够根据信息类型和等级(Level)记录信息,以及在运行时控制信息的格式化和信 ...
- 日志插件 log4net 的使用
文本格式说明 可以记载的日志类别包括:FATAL(致命错误).ERROR(一般错误).WARN(警告).INFO(一般信息).DEBUG(调试信息). 文本参数说明 %m(message):输出的日志 ...
- WinForm打印
WinForm打印要用打印控件: PageSetupDialog:打印设置对话框 PrintDialog:打印对话框 PrintDocument:要打印的对象,非常重要 PrintPreviewCon ...
- 孙鑫MFC学习笔记4:MFC画图
1.画线方法 *1.捕获鼠标按下和弹起消息,获取两个点 *2.消息响应,画线 2.在CMainFrame类中的鼠标左键事件得不到响应的原因是CNameView覆盖了CMainFrame 3.注释宏 4 ...
- 【Java每日一题】20161028
package Oct2016; public class Ques1028 { public static void main(String[] args){ new B().out(); // 输 ...
- 程序员下一门要学的编程语言Swift
基于PHP是世界上最好的编程语言这个真理,我一直认为Hack才是程序员要学的下一门编程语言. 但今天看到InfoQ放出的新闻:"Google或许会将Swift编程语言纳入Android平台并 ...
- jinfo命令的使用
jinfo命令 该命令可以打印出java进程的配置信息:包括jvm参数,系统属性等用法: jinfo [ option ] pid jinfo [ option ] executable core j ...
- spring mvc WebArgumentResolver不生效
WebArgumentResolver: SPI for resolving custom arguments for a specific handler method parameter. Typ ...
- 十一个行为模式之责任链模式(Responsible Chain Pattern)
定义: 将具有相同接口的责任类串行在一起,解耦请求的发送者和处理者.沿着这条链进行请求,直到有对象处理它为止. 结构图: Handler:抽象处理类,定义了所有责任类处理方法的接口,不同的处理方法在子 ...
- Linux更改主机名-适用于abuntu
今天复制了个ubuntu虚拟机,于是想更改下主机名以作区别.这是搜到的比较完整的资料,适用abuntu,不过其他linux系统还有待求证. 1.查看主机名 在Ubuntu系统中,快速查看主机名有多种方 ...