Each ArrayList instance has a capacity. The capacity is the size of the array used to store the elements in the list. It is always at least as large as the list size. As elements are added an ArrayList, its capacity grows automatically. The details of the growth policy are not specified beyond the fact that adding an element has constant amortized time cost.
An application can increase the capacity of an ArrayList instance before adding a large number of elements using the ensureCapacity operation. This may reduce the amount of incremental reallocation.
这里说到ArrayList的一个容量的问题,如果想要Add数量比较多的元素,最好要使用该类
的一个叫做ensureCapacity的方法来确保ArrayList实例具有你所要指定的一个最小的容量。这样的话,对于大容量ArrayList实例,应该就可以由JDK正确地指定到内存中了,这些内存段是否连续,当然是由JDK来处理的问题了。至于这个最小的容量可以达到多少,这里没有讲明,不过应该是和内存多少和每个元素的大小有关系的吧,不好一概而论!
防止out of memory,有一个方法,就是根据每次调用add方法的时候add的返回值(boolean型)来判断!
至于hashTable,与容量有关的是一下的一段:
The initial capacity controls a tradeoff between wasted space and the need for rehash operations, which are time-consuming. No rehash operations will ever occur if the initial capacity is greater than the maximum number of entries the Hashtable will contain divided by its load factor. However, setting the initial capacity too high can waste space.
这里提到初始容量和rehash方法,也就是hashtable在初始容量不够用的情况下可以通过
rehash方法自动增加容量,至于可以增加多少,文档也没有提,显然也是类似于ArrayList的吧。
发表评论
-
报表导出参数
2013-02-27 16:49 1309JRExporterParameter. JASPER_PR ... -
report
2013-02-22 12:08 799http://blog.csdn.net/usedtolov ... -
gwt
2013-02-21 17:02 933Google Web Toolkit的缩写,有了 GWT可以使 ... -
线程安全Collections.synchronizedList
2013-01-23 22:30 46714Collections.synchronizedList引发 ... -
java 一些么曾用的领域
2013-01-23 21:48 853阻塞与非阻塞io 1、nio 1.4 + 2、aio ... -
json 包依赖
2013-01-23 18:02 946commons-beanutils.jar commons ... -
线程池
2013-01-22 22:20 01、Executors类里面提供了一些静态工厂,生成一些常用 ... -
struts2 ext fileUpload
2012-11-23 16:19 0觉得这篇还写的可以,http://www.cnblogs.co ... -
myeclipe jvm setting
2012-11-21 10:23 0原文出处: 由MyEclipse内 ... -
IP转化
2012-07-15 15:56 906IP相互转化 /* * >>>无符 ... -
weblogic下载
2012-04-22 14:07 0weblogic 10.0版本的下载路径: http://w ... -
xml处理
2012-04-07 17:48 0一、此段代码是struts2中struts.xml的解析的部分 ... -
配置文件
2012-04-07 12:32 0以前教材源码的配置文件,很久不用,免的无从下手 一、web. ... -
零碎零碎
2012-02-27 16:30 01、SimpleDateFormat 的使用: Simple ... -
synchronized使用
2011-08-03 23:38 926synchronized关键字的使用: ①是某个对 ... -
Java修饰符
2011-08-03 23:18 972①类修饰符: public 可以从其他类中访问 a ... -
JSP内置对象
2011-07-31 21:37 900以下对JSP内置对象及其方法做一概述 一、reques ... -
设计模式-单例 Singleton
2011-07-31 03:03 774一、构成单例模式要点: ①、只有一个实例 ②、私有的构造方 ... -
嵌套类 内部类 静态内部类 匿名内部类
2011-07-30 18:03 1173一、嵌套类(Nested Class)分为:内部类(Inner ... -
JDK_7 Download
2011-07-30 01:11 1417尝尝鲜 哈哈: Linux x86 - RPM Ins ...
相关推荐
### Hashtable与ArrayList的简单应用 #### 一、概述 在.NET框架中,`Hashtable` 和 `ArrayList` 是两种非常常用的数据结构。它们被广泛应用于各种应用程序中,用于存储和操作数据。本文将详细介绍如何在C#中使用 `...
- **容量调整**:`ArrayList`和`Vector`在添加元素超过当前容量时会自动扩大容量,`HashMap`在达到一定负载因子后也会自动增大容量。 - **元素唯一性**:`List`中的元素默认不允许重复,而`Map`的键是唯一的,但键...
ArrayList 和 Hashtable 是 Java 编程语言中两种非常重要的集合类,它们都属于 Java Collection Framework 的一部分,用于存储和管理对象。下面将详细讲解这两个数据结构的特性、使用场景以及相关操作。 ArrayList ...
List、ArrayList、Vector及map、HashTable、HashMap分别的区别 List、ArrayList、Vector及map、HashTable、HashMap是Java容器类中的几个重要的接口和实现类,了解它们之间的区别是非常重要的。 首先,我们来看List...
### Java容器类详解:List、ArrayList、Vector及Map、HashTable应用 #### 一、Java容器类概述 在Java中,容器类(也称为集合类)主要用于存储和管理对象。Java SDK提供了一系列内置容器类,它们位于`java.util`...
ArrayList和Vector,以及HashMap和Hashtable,都是常用的容器,但它们之间存在一些关键的区别,这将影响到在不同场景下的选择和使用。 首先,我们来看ArrayList和Vector的区别: 1. **同步性**: - `ArrayList` ...
本文将深入探讨ArrayList、HashTable、List、Dictionary,T>以及其他的集合类型,帮助开发者理解它们的特点和适用场景。 首先,ArrayList作为.NET早期的动态数组,允许在运行时调整大小。它适合存储各种类型的对象,...
C# ArrayList、HashSet、HashTable、List、Dictionary的区别详解 C# 中有多种集合类,每种集合类都有其特点和应用场景。了解这些集合类的区别可以帮助开发者选择合适的集合类来提高程序的性能和可读性。本文将介绍 ...
1. **创建 HashTable**:创建一个 HashTable 对象,并定义它的初始容量和装载因子(Load Factor)。装载因子是指 HashTable 占用的空间比例,一般设置为 0.75 左右。 ```csharp Hashtable ht = new Hashtable();...
在这个深度复习中,我们将探讨ArrayList与其他相关集合类型如Hashtable、List以及Dictionary的区别和使用场景。 首先,ArrayList与Hashtable都是.NET框架中的旧式集合类型,它们不支持泛型,这意味着在存储数据时...
Vector默认增长为原来的两倍大小,而ArrayList增长为其现有容量的一半。这使得ArrayList在大多数情况下比Vector更高效,因为它避免了过多的内存复制。 3. HashMap和Hashtable: - 历史原因:Hashtable是早期Java...
4. 初始化容量:Hashtable 和 HashMap 的初始化容量不同,Hashtable 的初始化容量为 11*0.75,而 HashMap 的初始化容量为 16*0.75。 四、ArrayList 和 LinkedList 的区别 ArrayList 和 LinkedList 都是 Java 集合...
2. **容量增长策略**:当容量不足时,Vector会将容量翻倍,而ArrayList只会增加50%的大小。这使得ArrayList在内存使用上可能更加高效。 3. **操作效率**:无论是ArrayList还是Vector,从末尾添加和删除元素、获取...
- Vector在扩容时将容量翻倍,而ArrayList的扩容方式是增加约1.5倍的容量,这使得ArrayList在节约内存空间上表现更优。 - Vector可以设置capacityIncrement参数来控制容量的增长,而ArrayList没有这个功能。 - 为了...
ArrayList 可以看作是能够自动增长容量的数组,而 LinkedList 是一个双链表,在添加和删除元素时具有比 ArrayList 更好的性能,但在 get 与 set 方面弱于 ArrayList。 二、ArrayList 和 LinkedList 的区别 ...
- **初始容量**:Vector 的默认初始容量为 10,而 ArrayList 的默认初始容量为 0。这意味着当向 Vector 添加第一个元素时,其内部数组将至少增加到可以容纳 10 个元素的大小;而 ArrayList 会在第一次添加元素时分配...
- **初始容量与扩容**:HashMap默认初始容量为16,而Hashtable默认11,扩容时HashMap按原容量的1.5倍增长,HashTable则按照2n+1增长。 在选择这些集合类时,应根据实际需求考虑性能、线程安全性和数据操作特性。...
以下是对Java集合框架、Hashtable与HashMap以及ArrayList和LinkedList的一些关键知识点的详细解释: 1. **Java集合框架**: Java集合框架是一个统一的接口,提供了一种组织和操作对象的方式。它包括了接口(如List...
在阿里巴巴的面试中,Java集合框架是常见的话题,尤其是HashMap和Hashtable的区别,以及ArrayList和LinkedList的区别。 HashMap和Hashtable是Java中最常用的两种键值对存储的数据结构,它们都是基于哈希表实现的。...
- **初始化与扩容**:`HashTable`的默认初始容量为11,扩容时容量变为原来的2n+1;`HashMap`的默认初始容量为16,扩容时容量变为原来的2倍。 - **遍历方式**:`HashTable`使用枚举来遍历键值对;`HashMap`使用迭代...