ArrayList的用法
来源:互联网 发布:西沙海战知乎 编辑:程序博客网 时间:2024/04/29 17:00
上一篇我们提到了利用Arraylist对Hashtable进行排序,下面我们就对ArrayList进行一个简单的了解。因为没有
深入实践过,所以下面都是一些基本的介绍,只是为没有接触过ArrayList的人提供一个思路,大牛们可以略过了。
Capacity和Count的区别:
Capacity是ArrayList可以存储的元素数。Count是ArrayList中实际包含的元素数。Capacity总是大于或等于
Count。如果在添加元素时,Count超过Capacity,则该列表的容量会自动加倍扩充。如果Capacity的值显式设置,则
内部数组也需要重新分配以容纳指定的容量。如果Capacity被显式设置为0,公共语言运行库将其设置为默认容量。
默认容量为16。在调用Clear后,Count为0,而此时Capacity确是默认容量16,而不是0。
数组扩容
这是对ArrayList效率影响比较大的一个因素。每当执行Add、AddRange、Insert、InsertRange等添加元素的方
法,都会检查内部数组的容量是否不够了,如果是,它就会以当前容量的两倍来重新构建一个数组,将旧元素Copy到
新数组中,然后丢弃旧数组,在这个临界点的扩容操作,应该来说是比较影响效率的。比如,一个可能有200个元素
的数据动态添加到一个以默认16个元素大小创建的ArrayList中,将经过:16*2*2*2*2 = 256四次的扩容才会满足最
终的要求,那么如果一开始就:ArrayList List = new ArrayList( 210 );的方式创建ArrayList,不仅会减少4次数
组创建和Copy的操作,还会减少内存使用。
循环效率
频繁的调用IndexOf、Contains等方法(Sort、BinarySearch等方法经过优化,不在此列)引起的效率损失。
首先,我们要明确一点,ArrayList是动态数组,它不包括通过Key或者Value快速访问的算法,所以实际上调用
IndexOf、Contains等方法是执行的简单的循环来查找元素,所以频繁的调用此类方法并不比你自己写循环并且稍作
优化来的快,如果有这方面的要求,建议使用Hashtable等键值对的集合。
总结:
ArrayList和Hashtable都是存储数据的容量,了解它们的各自的特点,根据需求选择合适的容器,这样不仅可以
提高开发的效率也能增加系统的灵活性。
- ArrayList的用法分析
- arraylist的用法
- ArrayList的用法
- ArrayList的用法
- ArrayList的用法
- ArrayList类的用法
- ArrayList的用法
- ArrayList的用法
- C# ArrayList的用法
- ArrayList.toArray()的用法
- ArrayList的用法
- ArrayList的用法
- C# ArrayList的用法
- ArrayList的用法
- C# ArrayList的用法
- ArrayList的用法
- C# ArrayList的用法
- arraylist的用法
- java序列化和反序列化以及serialVersionUID的作用
- Android中Log信息的输出方法
- 在applicationcontext.xml遇到的问题
- MVC在前端报空引用的错误,位置一定不准备
- Java中一些关键字,伪代码的使用
- ArrayList的用法
- iOS多线程编程之NSOperation和NSOperationQueue的使用
- htmldiff
- Objective-C GCD多线程技术
- VC编程练习之API笔记(一)
- java代理模式
- fzu 1894 志愿者选拔 单调队列的学习
- Java的内存分配
- 锁屏显示正在播放的音乐