2013年3月28日星期四

ArrayList笔记


Jdk6:

1.初始化(源码):
public ArrayList(Collection<? extends E> c) {
   elementData = c.toArray();
   size = elementData.length;
   
// c.toArray might (incorrectly) not return Object[] (see 6260652)    if (elementData.getClass() != Object[].class)
       elementData = Arrays.copyOf(elementData, size, Object[].
class);
   }

下面是这个代号6260652中说到的bug代码示范:
   List l = Arrays.asList(args);
       System.out.println(l.toArray());
       System.out.println(l.toArray(new Object[0]));

EXPECTED -
[Ljava.lang.Object;@10b62c9
[Ljava.lang.Object;@82ba41

ACTUAL -
[Ljava.lang.String;@10b62c9
[Ljava.lang.Object;@82ba41

2.arrayList.toArray()内部调用的也是Arrays.copyOf

3.数组复制:
System.arraycopy(Object src,int srcPos,Object dest,int destPos,int length)

4.
默认初始容量10, 扩容方法ensureCapacity(int minCapacity)是取

min{ minCapacity, (oldCapacity *3)/2+1 }

没有评论:

发表评论