jdk:ArrayList
2015-06-19 11:56
555 查看
解决问题
ArrayList自动扩容关键词
(oldCapacity * 3)/2 + 1、copycode
/** * The array buffer into which the elements of the ArrayList are stored. * The capacity of the ArrayList is the length of this array buffer. */ private transient Object[] elementData; /** * The size of the ArrayList (the number of elements it contains). * * @serial */ private int size; /** * Constructs an empty list with the specified initial capacity. * * @param initialCapacity the initial capacity of the list * @exception IllegalArgumentException if the specified initial capacity * is negative */ public ArrayList(int initialCapacity) { super(); if (initialCapacity < 0) throw new IllegalArgumentException("Illegal Capacity: "+initialCapacity); this.elementData = new Object[initialCapacity]; } /** * Constructs an empty list with an initial capacity of ten. */ public ArrayList() { this(10); } public boolean add(E e) { ensureCapacity(size + 1); // Increments modCount!! elementData[size++] = e; return true; } public void ensureCapacity(int minCapacity) { modCount++; int oldCapacity = elementData.length; if (minCapacity > oldCapacity) { Object oldData[] = elementData; int newCapacity = (oldCapacity * 3)/2 + 1; if (newCapacity < minCapacity) newCapacity = minCapacity; // minCapacity is usually close to size, so this is a win: elementData = Arrays.copyOf(elementData, newCapacity); } } public static <T,U> T[] copyOf(U[] original, int newLength, Class<? extends T[]> newType) { T[] copy = ((Object)newType == (Object)Object[].class) ? (T[]) new Object[newLength] : (T[]) Array.newInstance(newType.getComponentType(), newLength); System.arraycopy(original, 0, copy, 0, Math.min(original.length, newLength)); return copy; }
相关文章推荐
- VBS ArrayList Class vbs中的数组类
- C#中ArrayList的使用方法
- C#中Array与ArrayList用法及转换的方法
- PowerShell中使用ArrayList实现数组插入、删除、添加例子
- 在JavaScript中构建ArrayList示例代码
- js实现ArrayList功能附实例代码
- java使用listIterator逆序arraylist示例分享
- Java中的Vector和ArrayList区别及比较
- Java中ArrayList类的使用方法
- java中ArrayList 、LinkList的区别分析
- 浅析java中ArrayList与Vector的区别以及HashMap与Hashtable的区别
- java教程之二个arraylist排序的示例分享
- JAVA LinkedList和ArrayList的使用及性能分析
- java的arraylist排序示例(arraylist用法)
- JDK API阅读体会 1-为什么大家都不推荐删除List中值
- c#限时作业
- ArrayList和LinkedList的主要区别
- Java中Vector和ArrayList的区别
- Vector 还是ArrayList
- ArrayList Vector LinkedList 区别与用法