http://www.gznc.edu.cn/yxsz/jjglxy/book/Java_api/java/util/ArrayList.html
http://dinghaoliang.blog.163.com/blog/static/126540714201061911132780/
我们在使用Arraylist时,经常要对它进行初始化工作,在使用add()方法增加新的元素时,如果要增加的数据量很大,应该使用ensureCapacity()方法,该方法的作用是预先设置Arraylist的大小,这样可以大大提高初始化速度。
请看代码:
Java代码
package test;
import java.util.ArrayList;
public class EnsureCapacityTest {
public static void main(String[] args){
final int N = 1000000;
Object obj = new Object();
//没用调用ensureCapacity()方法初始化ArrayList对象
ArrayList list = new ArrayList();
long startTime = System.currentTimeMillis();
for(int i=0;i<=N;i++){
list.add(obj);
}
long endTime = System.currentTimeMillis();
System.out.println("没有调用ensureCapacity()方法所用时间:" + (endTime - startTime) + "ms");
//调用ensureCapacity()方法初始化ArrayList对象
list = new ArrayList();
startTime = System.currentTimeMillis();
list.ensureCapacity(N);//预先设置list的大小
for(int i=0;i<=N;i++){
list.add(obj);
}
endTime = System.currentTimeMillis();
System.out.println("调用ensureCapacity()方法所用时间:" + (endTime - startTime) + "ms");
}
}
package test;
import java.util.ArrayList;
public class EnsureCapacityTest {
public static void main(String[] args){
final int N = 1000000;
Object obj = new Object();
//没用调用ensureCapacity()方法初始化ArrayList对象
ArrayList list = new ArrayList();
long startTime = System.currentTimeMillis();
for(int i=0;i<=N;i++){
list.add(obj);
}
long endTime = System.currentTimeMillis();
System.out.println("没有调用ensureCapacity()方法所用时间:" + (endTime - startTime) + "ms");
//调用ensureCapacity()方法初始化ArrayList对象
list = new ArrayList();
startTime = System.currentTimeMillis();
list.ensureCapacity(N);//预先设置list的大小
for(int i=0;i<=N;i++){
list.add(obj);
}
endTime = System.currentTimeMillis();
System.out.println("调用ensureCapacity()方法所用时间:" + (endTime - startTime) + "ms");
}
}
输出结果:
没有调用ensureCapacity()方法所用时间:110ms
调用ensureCapacity()方法所用时间:31ms
结果显而易见,在N的值很大的时候,使用ensureCapacity()方法可大大提高效率;而当N的值较小时,则所用时间差距不明显,这里就不在赘诉,如果感兴趣,各位网友可以自己试试。
分享到:
相关推荐
ArrayList的容量指的是用于存储列表元素的数组的大小,这个容量在创建ArrayList对象的时候初始化,并且会随着元素的添加而自动增长。当添加元素时,如果当前容量不足以容纳新元素,ArrayList就会创建一个新的更大的...
ArrayList提供了几种构造方法,可以根据需要初始化容量或创建空实例: 1. `ArrayList()`:创建一个空的ArrayList,初始容量为10。 2. `ArrayList(int initialCapacity)`:指定初始容量的ArrayList,避免频繁扩容。 ...
首先,ArrayList的基本操作包括初始化、添加元素、删除元素、修改元素以及遍历元素。我们可以创建一个ArrayList对象,并指定其初始容量,例如: ```java ArrayList<String> list = new ArrayList(5); ``` 添加元素...
2. 指定初始容量构造函数:允许创建指定大小的ArrayList,可以提高性能,因为不需要在添加元素时进行多次数组扩容操作。 3. 集合构造函数:可以通过一个已经存在的集合创建ArrayList实例。 知识点三:ArrayList的...
- 默认构造函数初始化容量为10。 - 带参数构造函数允许指定初始容量。 - 还有一个构造函数接受一个Collection,将Collection中的元素按顺序添加到ArrayList中。 3. **操作元素的方法** - **set方法**:通过...
ArrayList在初始化时,默认的容量大小是10。这可以通过查看ArrayList的源码得知,其中定义了一个常量`DEFAULT_CAPACITY`,其值为10。当创建一个新的ArrayList实例时,如果没有指定容量,则会使用这个默认值。然而,...
- ArrayList(Collection<? extends E> c): 使用给定的集合初始化ArrayList,将集合的所有元素复制到新创建的ArrayList中。 - ArrayList(int initialCapacity): 指定初始容量的构造函数,避免因添加元素导致的内部...
#### 五、ArrayList的构造函数与初始化 - **构造函数**:ArrayList提供了几种不同的构造函数,以满足不同的初始化需求。 - `ArrayList()`:创建一个空的ArrayList,初始容量为0。在这种情况下,ArrayList将使用一...
该数组是`transient`类型的,这意味着当序列化`ArrayList`对象时,不会保存该数组的信息,只保存列表元素本身及其相关的状态信息。 #### 构造方法 `ArrayList`提供了多种构造方法来适应不同的应用场景: 1. **无参...
无论是哪种构造方法,都是将 elementData 数组初始化为指定的容量。 add 方法 add 方法是 SxtArrayList 类中最重要的方法之一,该方法将指定的对象添加到集合中。如果集合的大小已经达到当前容量,那么将进行扩容...
ArrayList在初始化时,可以通过不带参数的构造器创建一个空的列表,或者指定初始容量的构造器来避免频繁的容量扩展。例如: ```java ArrayList<String> list = new ArrayList(); ArrayList<String> ...
1. 默认的构造方法:ArrayList(),该方法不会初始化容量大小,而是将列表的元素数据引用指向了一个空数组。 ```java private transient Object[] elementData; private static final Object[] EMPTY_ELEMENTDATA = ...
ArrayList初始化时,elementData数组大小默认为10;每次add()时,先调用ensureCapacity()保证数组不会溢出,如果此时已满,会扩展为数组length的1.5倍+1,然后用array.copy的方法,将原数组拷贝到新的数组中。 ...
ArrayList的构造器用于初始化ArrayList对象,add方法用于添加元素到ArrayList中,remove方法用于删除ArrayList中的元素,get方法用于获取ArrayList中的元素,set方法用于设置ArrayList中的元素,iterator和...
1. `ArrayList()`:默认构造方法,初始化一个容量为10的空列表。其实质是调用了`ArrayList(int initialCapacity)`,传入10作为初始容量。 2. `ArrayList(int initialCapacity)`:根据指定的初始容量创建列表。如果...
1. ArrayList的创建与初始化: 创建ArrayList实例可以通过两种方式:无参构造器或指定初始容量的构造器。例如: ```java ArrayList<String> list = new ArrayList(); ArrayList<String> listWithCapacity = new ...
要创建一个ArrayList,我们首先需要导入`java.util.ArrayList`包,然后实例化ArrayList对象。例如: ```java import java.util.ArrayList; ArrayList<String> list = new ArrayList(); ``` 2. 添加元素: 我们...
`ArrayList` 提供了多种构造函数,以满足不同的初始化需求: 1. **无参数构造函数**:创建一个初始容量为 10 的空列表。 ```java public ArrayList() { this(10); } ``` 2. **指定初始容量的构造函数**:创建...