黑马程序员技术交流社区

标题: C#中Array、ArraryList、List<T>的用法以及执行效率 [打印本页]

作者: 依米阳光    时间: 2014-11-23 10:56
标题: C#中Array、ArraryList、List<T>的用法以及执行效率
本帖最后由 依米阳光 于 2014-11-24 16:21 编辑

等了那么久都没人回答,这个贴子还是自己回答吧,有需要的朋友可以看下   class Program
    {
        static void Main(string[] args)
        {
            ArrayListTest();
            ListTest();
            ArrayTest();
        }
        private static void ArrayListTest()
        {
            Stopwatch sw = new Stopwatch();
            ArrayList list = new ArrayList();
            sw.Start();
            int i;
            for (i = 0; i < 1000000; i++)
            {
                list.Add(i);
            }
            sw.Stop();
            Console.WriteLine("ArrayList运行时间为:{0}毫秒\n", sw.Elapsed.Milliseconds);
        }

        private static void ListTest()
        {
            List<int> list2 = new List<int>();
            Stopwatch sw = new Stopwatch();
            sw.Start();
            int i;
            for (i = 0; i < 1000000; i++)
            {
                list2.Add(i);
            }
            sw.Stop();
            Console.WriteLine("List<T>运行时间为:{0}毫秒\n", sw.Elapsed.Milliseconds);
        }

        private static void ArrayTest()
        {
            int[] arr = new int[1000000];
            Stopwatch sw = new Stopwatch();
            sw.Start();
            int i;
            for (i = 0; i < 1000000; i++)
            {
                arr = i;
            }
            sw.Stop();
            Console.WriteLine("Array运行时间为:{0}毫秒", sw.Elapsed.Milliseconds);
            Console.ReadKey();
        }
    }


总结:

    数组的容量是固定的,您只能一次获取或设置一个元素的值,而ArrayList或List<T>的容量可根据需要自动扩充、修改、删除或插入数据。

    数组可以具有多个维度,而 ArrayList或 List< T> 始终只具有一个维度。但是,您可以轻松创建数组列表或列表的列表。特定类型(Object 除外)的数组 的性能优于 ArrayList的性能。 这是因为 ArrayList的元素属于 Object 类型;所以在存储或检索值类型时通常发生装箱和取消装箱操作。不过,在不需要重新分配时(即最初的容量十分接近列表的最大容量),List< T> 的性能与同类型的数组十分相近。

    在决定使用 List<T> 还是使用ArrayList 类(两者具有类似的功能)时,记住List<T> 类在大多数情况下执行得更好并且是类型安全的。如果对List< T> 类的类型T 使用引用类型,则两个类的行为是完全相同的。但是,如果对类型T使用值类型,则需要考虑实现和装箱问题。



执行时间.PNG (3.73 KB, 下载次数: 23)

执行时间.PNG

作者: jdedffjef83j    时间: 2014-12-6 15:49
我觉得应该是根据需求,找到合适的数据类型。




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2