标签:stat order move 20px set sans hit ini public
code example
Object get(int index) Object set(int index,Object element) int indexOf(Object elem) void add(int index,Object element) Object remove(int index)
List接口中的大多数方法是基于索引的。
1、可以看成一维数组的改良版,支持随机访问,ArrayList对象的大小自动调整。 2、ArrayList对象中每个元素的相对位置都是利用索引表示,索引范围0~n-1 3、给定一个索引,访问这个索引位置上的元素时间是常数级别。 4、删除元素,最坏情况是O(n-index),所以删除靠后面的元素花费的时间越少。 5、插入元素,最坏情况是O(n-index),所以插入末尾操作花费时间越少。
public ArrayList Object(int initialCapacity); 指定初始化容量的大小
public boolean add(Object o); 在末尾插入元素
public int size(); 返回容器的有效元素个数
......
ObjectOutputStream
实现了Clonable接口 方法:
public Object clone();
复制的是ArrayList对象中元素的引用,并不是对象,所以称为“浅复制”。
public class ArrayListDemo {
public static void main(String[] args) {
ArrayList<Integer> list=new ArrayList<Integer>(3);
list.add(1);
list.add(2);
System.out.println("list size="+list.size());
ArrayList<Integer> temp=(ArrayList<Integer>) list.clone();
System.out.println("temp size="+temp.size());
//www.90168.org不改变克隆对象
list.add(3);
System.out.println("list result size="+list.size());
System.out.println("temp result size="+temp.size());
}
}
/*
*list size=2
*temp size=2
*list result size=3
*temp result size=2
*/
1、数组一般扩充50% 2、add()方法将newCapacity设置成(oldCapacity*3)/2+1并没有实际的意义,只是为了时间和空间的平衡。
1、继承了AbstractList的modCount字段 add()、remove()modCount加1 一旦next()方法激活,就不能修改ArrayList。
public class ArrayListDemo2 { public static void main(String[] args) { ArrayList<Integer> list=new ArrayList<Integer>(); list.add(2); list.add(3); Iterator it=list.iterator(); while(it.hasNext()){ int ele=(int) it.next(); //进行修改,会抛异常 list.add(1, 4); System.out.println(ele); } } }
1、Vector类也是基于数组实现 2、Vector类的方法大都是同步的。
标签:stat order move 20px set sans hit ini public
原文地址:http://www.cnblogs.com/tianshifu/p/6165775.html