============================ 集合综述 ==============================
1、什么是泛型: 泛型就是限制了操作类型,意思如下:
计算机中经常用到一些数据结构,如队列,链表等,而其中的元素以前一般这么定义:object a=new object();
用object来表示元素带来一个严重的问题,每次拆箱、封箱占用了大量的计算机资源,导致程序性能低下,
而泛型就是在编译阶段就告诉编译器,数据结构中元素的种类,既然编译器知道了元素的种类,
自然就避免了拆箱、封箱的操作,从而显著提高c#程序的性能。
。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。
ArrayList、Hashtable,不是泛型集合,所以添加到他们对象里面的元素都将隐式地向上强制转换为 Object,
则必须在将其添加到列表中时进行装箱操作,在检索时进行取消装箱操作,降低了相率
List、Dictionary是泛型集合,就不会存在这种现象
List 是 ArrayList 对应的泛型集合,他们相当于特殊的数组
Dictionary 是 Hashtable对应的泛型集合,他们存储的是键值对
========================== ArrayList ============================
ArrayList 典型示例代码。。。。。。。。。。。。。。。。。。。。。。。。。
为 ArrayList 添加不同类型的元素,然后遍历这些值
static void Main(string[] args)
{
int []num=new int[]{12,4,56,87,8765};
ArrayList arrayList = new ArrayList();
arrayList.Add("老马");
arrayList.Add("老苏");
arrayList.Add(45.5);
arrayList.Add(100);
arrayList.Add(true);
arrayList.Add(49.34m);
arrayList.Add('女');
arrayList.Add(num);
arrayList.AddRange(num);
arrayList.Add(new Person("老牛", '女', 74));
for (int i = 0; i < arrayList.Count; i++)
{
Console.WriteLine(arrayList[i]);
if (arrayList[i] is Person) //遍历其中的对象
{
((Person)arrayList[i]).Show();
Console.WriteLine(((Person)arrayList[i]).Name);
Console.WriteLine(((Person)arrayList[i]).Age);
Console.WriteLine(((Person)arrayList[i]).Gender);
}
if (arrayList[i] is int[]) //遍历其中的整形数组
{
int []numbers=(int[])arrayList[i];
for (int j = 0; j < numbers.Length; j++)
{
Console.WriteLine(numbers[j]);
}
}
}
Console.ReadKey();
}
ArrayList 常用方法、属性 总结。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。
arrayList.Count;
arrayList.AddRange(num); arrayList.Add(num); 注:两者的区别
arrayList.Clear();
bool result=arrayList.Contains('女');
arrayList.Remove("牛牛"); 移除牛牛,如果该项不存在,不报错
arrayList.RemoveAt(3); 移除下标为3的元素
arrayList.Reverse(2,3); 顺序反转
=========================== Hashtable ================================
Hashtable 典型代码 1。。。。。。。。。。。。。。。。。。。。。。。
static void Main(string[] args)
{
ht.Add(4, "老苏");
ht.Add(9,"王二麻子");
ht.Add("2","打酱油的");
ht.Add(6,"赵六");
ht.Add(7,"老苏");
ht.Add(5,"哈哈");
ht.Add(8,"呵呵");
ht.Add("怎么的","把我也放进去");
foreach (var key in ht.Keys) //当键是不同数据类型时,用var表示
{
Console.WriteLine(ht[key]);
}
Console.ReadKey();
}
Hashtable 典型代码 2 。。。。。。。。。。。。。。。。。。
static void Main(string[] args)
{
Hashtable ht = new Hashtable();
ht.Add("张三", 1000);
ht.Add("李四", 1010);
ht.Add("王五", 1012);
foreach (string item in ht.Keys) //当键的类型一致时,就使用当前类型代替var
{
Console.WriteLine("key是{0},value是{1}",item,ht[item]);
}
Console.ReadKey();
}
Hashtable 常用方法 。。。。。。。。。。。。。。。。。。
Add 将带有指定键和值的元素添加到 Hashtable 中。
Clear 从 Hashtable 中移除所有元素。
Contains ContainsKey 两个方法一样 确定 Hashtable 是否包含特定键。
ContainsValue 确定 Hashtable 是否包含特定值。
Remove 从 Hashtable 中移除带有指定键的元素。
============================= List ==================================
List 典型示例代码 。。。。。。。。。。。。。。。。。。。。
class Program
{
static void Main(string[] args)
{
int[] nums = new int[] { 12,4,53,5,32};
List<int> list = new List<int>();
list.Add(1);
for (int i = 0; i < 100; i++)
{
list.Add(i);
}
list.AddRange(nums); // 添加数组
for (int i = 0; i < list.Count; i++) //遍历 List
{
Console.WriteLine(list[i]);
}
Console.WriteLine(list.Max()); //聚集函数的应用
Console.WriteLine(list.Min());
Console.WriteLine(list.Sum());
Console.WriteLine(list.Average());
Console.ReadKey();
}
}
========================== Dictionary ============================
static void Main(string[] args)
{
Dictionary<string, string> dic = new Dictionary<string, string>();
dic.Add("老牛", "吃草");
dic.Add("老马","吃嫩草");
dic.Add("老蒋", "吃肉");
dic.Add("老杨", "吃素");
dic.Add("老王","吃辣椒");
dic.Add("老苏","吃面条");
dic.Add("小杨","吃豆腐");
foreach (string item in dic.Keys)
{
Console.WriteLine("key是{0},value是{1}",item,dic[item]);
}
Console.ReadKey();
}
- 类 Array Arraylist List Hashtable Dictionary
总结C# 集合类 Array Arraylist List Hashtable Dictionary Stack Queue 我们用的比较多的非泛型集合类主要有 ArrayList类 和 HashT ...
- C# 集合类 Array,Arraylist,List,Hashtable,Dictionary...
我们用的比较多的非泛型集合类主要有 ArrayList类 和 HashTable类.我们经常用HashTable 来存储将要写入到数据库或者返回的信息,在这之间要不断的进行类型的转化,增加了系统装箱和 ...
- ArrayList、HashTable、List、Dictionary的演化及如何选择使用
在C#中,数组由于是固定长度的,所以常常不能满足我们开发的需求. 由于这种限制不方便,所以出现了ArrayList. ArrayList.List<T> ArrayList是可变长数组,你 ...
- C#基础课程之五集合(HashTable,Dictionary)
HashTable例子: #region HashTable #region Add Hashtable hashTable = new Hashtable(); Hashtable hashTabl ...
- 泛型与非泛型集合类的区别及使用例程,包括ArrayList,Hashtable,List<T>,Dictionary<Tkey,Tvalue>,SortedList<Tkey,Tvalue>,Queue<T>,Stack<T>等
泛型与非泛型集合类在C#程序中是非常重要的一个基础概念,这里列一个表来进行对比: 非泛型集合类 泛型集合类 描述 ArrayList List<T> 表示具有动态大小的对象数组 Hasht ...
- C#中集合ArrayList与Hashtable的使用
C#中集合ArrayList与Hashtable的使用 http://blog.csdn.net/linukey/article/details/42506819 ArrayList: 一. 注意事项 ...
- .net学习之集合、foreach原理、Hashtable、Path类、File类、Directory类、文件流FileStream类、压缩流GZipStream、拷贝大文件、序列化和反序列化
1.集合(1)ArrayList内部存储数据的是一个object数组,创建这个类的对象的时候,这个对象里的数组的长度为0(2)调用Add方法加元素的时候,如果第一次增加元神,就会将数组的长度变为4往里 ...
- Java集合简单解析
一. Collection 1. List a. ArrayList b. Vector c. LinkedList 首先要对List的三种实现进行一个简单的异同比较: 同: *ArrayList和V ...
- Java 集合系列 11 hashmap 和 hashtable 的区别
java 集合系列目录: Java 集合系列 01 总体框架 Java 集合系列 02 Collection架构 Java 集合系列 03 ArrayList详细介绍(源码解析)和使用示例 Java ...
随机推荐
- 进度记录 和 安装imagick时Cannot locate header file MagickWand.h错误的解决
修改php.ini文件,已使php支持扩展的功能 [root@localhost imagick-2.2.2]# ./configure --with-php-config=/usr/local/ph ...
- Laravel 5.1 ACL权限控制 一
请自行添加命名空间,代码下载地址 https://github.com/caoxt/learngit 1.所需要用到的数据表 users(用户表).roles(角色表).role_user(用户角色对 ...
- C语言之猜数字游戏
猜数字游戏 猜数字游戏是以前功能机上的一款益智游戏,计算机会根据输入的位数随机分配一个符合要求的数据,计算机输出guess后便可以输入数字,注意数字间需要用空格或回车符加以区分,计算机会根据输入信息给 ...
- jQuery 动态元素添加
有这么一道题 <!DOCTYPE html> <head> <title>前端工程师面试题</title> <meta http-equiv=&q ...
- Apache和Nginx下禁止访问特定的目录或文件
大家是否测试Apache做了目录禁止浏览后,目录下面的txt文件还是可以显示里面的内容的.例如:http://www.domain.com/test/此访问会报403错误,但是如果test下有很多tx ...
- (转)requirejs:杏仁的优化(almond)
使用场景 什么情况下需要使用 almond 呢?假设你手头有个基于requirejs的小项目,所有业务代码加起来就几十K(压缩后可能更小).出于性能优化的考虑,你可能在想:如果能够去掉requirej ...
- 让Qt支持Win7的Aero和毛玻璃效果
Qt5增加了许多特性,其中 Qt Windows Extras 模块就增加了对Win7 Aero 效果的支持. 官网的介绍如下: Qt Windows Extras provide classes a ...
- 看看微软代码的水平——Windows Live Writer 完成开源并推出开源分支
http://www.oschina.net/news/68860/windows-live-writer-opensource
- JavaEE Tutorials (4) - 企业bean入门
4.1创建企业bean52 4.1.1编写企业bean类53 4.1.2创建converter Web客户端53 4.1.3运行converter示例544.2修改Java EE应用55 4.2.1修 ...
- Kali Linux 安全渗透教程<第三更>1.2 安全渗透所需工具
了解了渗透測试的概念后.接下来就要学习进行渗透測试所使用的各种工具.在做渗透測试之前.须要先了解渗透所需的工具.渗透測试所需的工具如表1-1所看到的: 表1-1 渗透所需工具 splint unhi ...