- 什么是ArrayList
- ArrayList的特点
- ArrayList继承的类和实现的接口
- ArrayList的扩容
- ArrayList的遍历
什么是Arraylist
Arraylist的底层是基于动态数组的形式实现的,通过加入元素的大小进行一个判断,不够的话就动态扩容
ArrayList的特点
访问的速度比较快,插入和删除的性能较差
支持null元素
有顺序
元素可以重复
线程不安全
ArrayList继承的类和实现的接口
ArrayList的扩容
通过无参构造方法对数组进行初始化,当数组进行第一次add时,会给数组分配一个默认的初始容量10,之后扩容会按照1.5增长
private Object[] grow(int minCapacity) {
int oldCapacity = elementData.length; if(oldCapacity>0||elementData!=DEFAULTCAPACITY_EMPTY_ELEMENTDATA) {
int newCapacity = ArraysSupport.newLength(oldCapacity,
minCapacity - oldCapacity, /* minimum growth /
oldCapacity >> 1 / preferred growth */);
return elementData = Arrays.copyOf(elementData, newCapacity);
} else {
return elementData = new Object[Math.max(DEFAULT_CAPACITY, minCapacity)];
}
}
ArrayList的遍历
package com.pichen.basis.col;
import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;
public class Test {
public static void main(String[] args) {
List<Integer> list = new ArrayList<Integer>();
for(int i = 0; i < 10; i++){
list.add(i);
}
//直接打印
System.out.println(list.toString());
//for循环
System.out.println("for循环:");
for(int i = 0; i < list.size(); i++){
System.out.print(list.get(i) + " ");
}
//foreach
System.out.println("\nforeach:");
for(Integer i : list){
System.out.print(i + " ");
}
//iterator
System.out.println("\niterator:");
Iterator<Integer> iterator = list.iterator();
while(iterator.hasNext()){
System.out.print(iterator.next() + " ");
}
}
}