• 数组与ARRAYLIST的关系与区别(转)


    一、数组与ArrayList的主要区别:效率、类型识别和primitive type。

    数组([]):最高效;但是其容量固定且无法动态改变;
    ArrayList:容量可动态增长;但牺牲效率;
    建议:
    首先使用数组,无法确定数组大小时才使用ArrayList!

    1.效率:
    数组扩容是对ArrayList效率影响比较大的一个因素。
    每当执行Add、AddRange、Insert、InsertRange等添加元素的方法,都会检查内部数组的容量是否不够了,如果是,它就会以当前容量的两倍来重新构建一个数组,将旧元素Copy到新数组中,然后丢弃旧数组,

    在这个临界点的扩容操作,应该来说是比较影响效率的。

    ArrayList是Array的复杂版本
    ArrayList内部封装了一个Object类型的数组,从一般的意义来说,它和数组没有本质的差别,甚至于

    ArrayList的许多方法,如Index、IndexOf、Contains、Sort等都是在内部数组的基础上直接调用Array的对应方法。

    2.类型识别:
    ArrayList存入对象时,抛弃类型信息,所有对象屏蔽为Object,编译时不检查类型,但是运行时会报错。

    注:jdk5中加入了对泛型的支持,已经可以在使用ArrayList时进行类型检查。

    从这一点上看来,ArrayList与数组的区别主要就是由于动态增容的效率问题了


    3.ArrayList可以存任何Object,如String,Employee等,但不支持基本数据类型,除非使用wrapper。

    二、数组与ArrayList的转换

    数组->arraylist(由于数组是长度固定的,可以除去最后一个空格,然后重新赋值到新的数组中!)

         string[] grades = grade.Split(';');
         ArrayList arr = new ArrayList(grades);
         arr.RemoveAt(grades.Length - 1);

    arraylist->数组

        grades = (string[])arr.ToArray(typeof(string));
  • 相关阅读:
    批量重命令文件名称的几种方式
    SecureCRT常用快捷键
    ipv4地址从最后一位按步长递增
    win32
    GDI根据位图和透明度创建蒙版
    git bash的一些使用
    win32
    win32
    win32
    QT
  • 原文地址:https://www.cnblogs.com/jonson1126/p/3357582.html
Copyright © 2020-2023  润新知