ArrayList是Java中常用的集合类之一,它可以动态的添加或删除元素,使用灵活方便。在使用ArrayList过程中,了解其初始化和扩容方式非常重要,能够有效提高代码效率。下面是详细讲解:
ArrayList初始化
无参构造函数初始化
使用无参构造函数初始化ArrayList集合时,默认创建一个空集合,如下:
ArrayList<String> list = new ArrayList<String>();
利用Collection类型初始化
在使用ArrayList类的有参构造函数初始化时,可以使用java.util.Collection类型的对象作为参数,该参数会初始化ArrayList集合,并将传入的Collection中所有的元素添加到ArrayList集合中,如下:
List<String> srcList = new ArrayList<String>();
srcList.add("Java");
srcList.add("Python");
srcList.add("PHP");
ArrayList<String> destList = new ArrayList<String>(srcList);
使用Arrays.asList()方法初始化
在上面的初始化方式中,需要先初始化一个java.util.List集合,再将其转化为ArrayList。实际上我们可以使用Arrays.asList()方法,直接将一些元素作为参数初始化ArrayList集合,如下:
ArrayList<String> list = new ArrayList<String>(Arrays.asList("Java", "Python", "PHP"));
ArrayList扩容方式
数组是ArrayList内部存储元素的数据结构,当需要添加元素到ArrayList时,若数组空间不足,则需要扩容,以保证可以存储更多的元素。
默认扩容方式
ArrayList的默认扩容方式是设置一个固定容量的数组,当插入元素时,如果当前元素个数超过数组容量,则会按照1.5倍进行扩容,即当前容量x1.5,然后将原数组中的元素复制到新数组中。
手动指定容量
在初始化ArrayList时,可以手动指定初始容量,如下:
ArrayList<String> list = new ArrayList<String>(10);
手动指定容量一般会增加程序的效率,因为预留下足够的空间可以避免频繁扩容,提高运行效率。
示例说明
以下是两个ArrayList初始化和扩容方式的示例:
示例1
ArrayList<Integer> list = new ArrayList<Integer>();
for (int i = 0; i < 10; i++) {
list.add(i);
}
以上示例中,使用无参构造函数初始化了一个空的ArrayList集合,并使用for循环向其中添加了10个元素。当添加第11个元素时,ArrayList会按照默认扩容方式进行扩容,容量变为15,然后将10个元素复制到新数组中。
示例2
ArrayList<String> list = new ArrayList<String>(20);
for (int i = 0; i < 10; i++) {
list.add("Java" + i);
}
以上示例中,手动指定初始容量为20,然后使用for循环向其中添加10个元素。由于容量已经足够,所以并没有进行扩容操作,因此效率更高。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:ArrayList集合初始化及扩容方式 - Python技术站