我在北京写代码 写出心中悲与喜 写出人间的悲欢离合 欢迎阅读 我的第三章 使用集合组织相关数据(泛型集合)

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了我在北京写代码 写出心中悲与喜 写出人间的悲欢离合 欢迎阅读 我的第三章 使用集合组织相关数据(泛型集合)相关的知识,希望对你有一定的参考价值。

ArrayList arry = new ArrayList();
            arry.Add("小明");
            arry.Add("小D");
            arry.Add("小B");
            arry.Insert(2,"小狗");
            arry.Remove("小狗");
            arry.RemoveAt(0);
            arry[0]="小明哥";
            bool ic = arry.Contains("菊花");
            if (ic)
            {
                Console.WriteLine("这是abc");
            }
            else 
            {
                Console.WriteLine("这是cba");
            }
            foreach (var item in arry)
            {
                Console.WriteLine(item);
            }

            //seF se = new seF();
            ArrayList a = new ArrayList() 
            { 
                new seF(){name="sb"},
                new seF(){name="ccc"},

            };
            System.Collections命名空间
            实例化ArrayList对象。
            ArrayList engineers =new ArrayList();
            ArrayList engineers =new ArrayList(5);[可以指定长度]
            se engineers =(se) engineers [0];

                Hashtable添加元素
          Hashtable enginess = new Hashtable();
          engineers.Add(Key,Value);     

 

 

 

 

集合概述

 1.集合:一个动态维护2长度的数组

       ArrayList集合

 2.可维护动态长度的集合
  01.ArrayList:
   一个可动态维护长度的集合
  02.集合结构
   001.下标从0开始
   002.元素的类型是Object类型
  03.初始化
   001.引用System.Collections命名空间,实例化ArraysList对象
   002.集合可以指定初始容量,也可以不指定
    0001.不指定容量的情况下默认长度为0
 3.基本操作
  01.Add()
   集合名.Add(需要添加的元素)
    集合尾部追加元素
     *集合中添加值类型的元素时,会执行装箱处理
  02.Insert()
   集合名.Insert(下标位置,添加的元素)
    集合中插入元素
  03.Count
   集合名.Count
    获取集合中的元素数量
  04.删除元素
   001.Remove(对象名)
    语法:ArraysList名.Remove(对象名)
     *删除指定对象名的对象 
     *没有相应的对象名是不会出现异常
   002.RemoveAt(下标)
    语法:ArraysList名.RemoveAt(对象名)
     *删除指定索引的对象
     *没有相应的下标时会出现异常(集合越界)
   003.Clear()
    语法:ArraysList名.Clear(对象名)
     *删除集合内的所有元素
  05.Contains()
   语法:集合名.Contains(元素名)
    判断集合中是否有相应的元素,返回布尔类型  
 4.集合初始化器
  01.C#3.0语言的新特性之一
  02.由系统元素初始化器构成,包围在“{”和“}”之间,并使用逗号进行分割
   语法:
    ArrayList arr = ArrayList()
    {
     1,5,new SE(){"帅帅",12,"男"}
    };
     *结尾不使用任何符号,但大括号后需要用英文符号结尾
      *在初始化器中可以添加任何类型的元素
 5.访问ArraysList单个元素
  语法:
   ArraysList(集合名)[index(访问的下标)]//按指定索引(下标)取得对象
 6.访问ArraysList中所有元素
  *使用循环实现

        Hashtable

 1.集合
  01.动态可维护长度
  02.可通过关键字检索
 2.HashTable通常称为哈希表
  01.根据键(Key)可以查询到相应的值(Value)
   *键和值一一对应
  02.Key值不可重复
 3.使用HashTable
  01.给HashTable添加元素
   HashTable hash = new Hashtable();
   Add(Key,Value);
  02.获取HashTable的元素
   SE se1 = (SE) hash["key"];//通过key获取元素(需要类型转换)
   se1.Show();
    *没有找到相应的key是返回一个null
  03.删除HashTable的元素
   hash.Remove("key");//通过key删除元素
    *如没有相应的key,不会出现异常
  04.清空HashTable中所有元素
   hash.Clear();//清空所有
 4.遍历HashTable
   *遍历HashTable通过foreach循环
  01.遍历键和值
   foreach(DictionaryEntry ob in hash)
   {
    Console.WriteLine((stirng)ob);
    SE se = (SE)ob;
    Console.WriteLine(se.Name);
   }
  02.遍历键
   foreach(Object ob in hash.Keys)
   {
    Console.WriteLine((string)ob);
   }
  03.遍历值 
   foreach(Object ob in hash.Values)
   {
    SE se = (SE)ob;
    Console.WriteLine(se.Name);
   }
  
       泛型和泛型集合

 1.使用List<T>(泛型集合)
  *<T>尖括号中的参数是集合所能添加的类型
  *若添加别的类型的参数会出现异常
 2.List<T>基本操作
  01.命名空间:System.Collections.Generic;(一般情况下编译器自动导入)
  *基本的操作跟ArrayList相同
 3.什么是泛型集合
  01.泛型<T>最常见的用途是创建集合类
  02.泛型集合可以约束集合内的元素类型
  03.经典泛型集合List<T>、Dictionary<K,V>
   *<T>、<K,V>表示该泛型集合中的元素类型
  04.泛型集合不会用到装箱和拆箱
 04.List<T>与ArrayList的对比
  01.不同点
   001.List<T>:添加元素时类型严格检查。而ArrayList:可以增加任何类型
   002.List<T>:添加和读取值类型元素时,无需装箱拆箱。而ArrayList:添加和读取值类型元素时,需要装箱拆箱

      Dictionary

 1.Dictionary<K,V>通常称为字典
  01.<K,V>约束集合中元素类型
  02.编译时查询类型约束
  03.无需装箱、拆箱操作
   *操作与HashTable操作类似
 2.<K,V>
  01.在Dictionary中<K,V>是自定义的
  02.K:
   001.K不能重复
   002.K不能为空
   003.通过K访问元素时:如没有相应的K,系统会报错
   004.通过K删除元素时:如没有相应的K,系统不会报错
 3.遍历Dictionary
  01.循环遍历时跟HashTable相似,不需要进行类型转换
  02.遍历键和值
   foreach(KeyValuePair<string,SE> ob in hash)
   {
    Console.WriteLine((stirng)ob);
    SE se = (SE)ob;
    Console.WriteLine(se.Name);
   }
    *遍历键和值时循环类型使用KeyValuePair
    *后边的尖括号中添加相应类型的K,V
 4.Dictionary<K,V>与HashTable的对比
  1.不同点
   001.Dictionary<K,V>:增加元素时类型严格检查。而HashTable:可以增加任何元素
   002.Dictionary<K,V>:无序装箱拆箱。而HashTable:需要装箱和拆箱
  02.相同点
   001.通过Key获得Value
   002.添加对象方法相同
   003.遍历方法相似,遍历键和值的时候使用的循环类型不通过

       泛型

 1.泛型
  01.操作的数据类型被定义为一个参数
 2.泛型类
  public class 类名<T>
  {
    //......  
  }
   *T指类型参数,代表具体的数据类型,可以是类类型,也可以是基本数据类型
 3.泛型的重要性
  01.实现代码重用,未来的主流技术
   01.泛型相当于模板,支持所有的类型。使开发者不用为某种类型写特定的方法
  02.性能高,避免繁琐的装箱拆箱
  03.提供了更好的类型安全性
   01.有相应的类型约束,不用进行装箱拆箱。
  04.CLR支持泛型
   001.CLR是公共语言运行库(Common Language Runtime)和Java虚拟机一样也是一个运行时环境,它负责资源管理(内存分配和垃圾收集等),并保证应用和底层操作系统之间必要的分离。CLR存在两种不同的翻译名称:公共语言运行库和公共语言运行时。

以上是关于我在北京写代码 写出心中悲与喜 写出人间的悲欢离合 欢迎阅读 我的第三章 使用集合组织相关数据(泛型集合)的主要内容,如果未能解决你的问题,请参考以下文章

map的常见用法与五种循环遍历源码---人生四季,寒暑交替,只有学会了“map”才能静心体味生活的悲与喜

八大排序老忘?视图结合高效写出代码(上)!

八大排序老忘?视图结合高效写出代码(下)!

写代码的指导思想:如何写出易测清晰健壮的牢固代码

如何写出更好的Java代码

编程小技巧,教你写出高质量代码!