zoukankan      html  css  js  c++  java
  • 各种数值集合的类型(Array、ArrayList、Hashtable、List<T>、Dictionary)

    主要有:1、数组array    2、ArrayList    3、HashTable     4、泛型集合List<T>

    1、Array

    数组的特点是存储的类型统一,长度固定。

    在我们一开始声明数组的时候就得确定他的长度,堆内存就要分配相应大小的内存空间。所以比较静态,不灵活。

    2、解决Array的缺点,出现了ArrayList类型

    ArrayList的长度是动态变化的,随着我们Add的对象的增加,他的数量(Count)逐一增加,他的容量(Capacity)成倍(2的指数倍)的增加。同时他存储的对象类型是Object类型,即对存储的类型没有任何限制。解决了Array的两个不足。

    可惜的是,此时出现了一个问题:当我们检查一个ArrayList中是否包含某一个对象时,我们需要遍历整个ArrayList。效率极其低下。So sad。

    3、解决ArrayList的缺点,出现了Hashtable

    Hashtable存储的对象同样是Object类型,so方便。但是Hashtable中的对象的索引(index)是我们自己定义的。例如我们在增加一个成员的时候是这样的hashtable.Add(person.Name,person)

    所以,Hashtable中的键值(即索引)不能是一样的。

     4、泛型集合List<T>

    上面的ArrayList存储的是Object类型有带来一个麻烦,就是当我们取出来使用的时候必须强转一下才能继续使用,所以出现了List<T>。<T>输入类型,如int、string等等。T是什么类型就必须添加什么类型,这样当我们取出来的时候就不需要强转了。

    List<int>的ToArray()方法的结果是输出一个int[]的数组。List是微软推荐使用的。像上面两个是需要添加命名空间System.Collections。但是他们之间的区别主要还是因为ArratList没用一次都会发生装箱(box)或者拆箱(unbox)的过程(要是我们ArrayList中存储的时候值类型的时候),相对来说,List<T>就没有装箱或者拆箱的麻烦,性能提高不是一点两点的。

    List<int>与int[]的区别:就是int[]长度确定,而前者是动态的。

    5、Dictionary

    跟ArrayList检查是否存在某一值的时候需要遍历的尴尬一样,ArrayList产生了Hashtable。相应的,List<T>产生了Dictionary。

    Just like writing, coding is a work of creating!
  • 相关阅读:
    摩托罗拉SE4500 德州仪器TI Omap37xx/AM3715/DM3730/AM3530 wince6.0/Windows Mobile 6.5平台 二维软解调试记录及相关解释
    摩托罗拉SE4500 三星 S3C6410 Wince6.0平台软解码调试记录以及驱动相关问题解释
    MSM8909+Android5.1.1之系统烧录
    PIC16F914SEG脚中电路图注意事项
    PIC16F914ADC模块采集数据转换
    PIC914AD模块使用记录
    PIC914 LCDCON液晶控制寄存器用法
    PIC914SEG设置方法
    示波器用法
    检测单片机是否启动
  • 原文地址:https://www.cnblogs.com/chenbuer/p/3710252.html
Copyright © 2011-2022 走看看