JAVA面试

ArrayList 回顾

2017-08-01  本文已影响3人  厌恶狡诈心机

ArrayList特性

实现接口

内部主要组成部分

private transient Object[] elementData;//数组
private int size;//元素长度

数组长度扩展:1.5倍增长

private void grow(int minCapacity) {
    // overflow-conscious code
    int oldCapacity = elementData.length;
    int newCapacity = oldCapacity + (oldCapacity >> 1);
    if (newCapacity - minCapacity < 0)
        newCapacity = minCapacity;
    if (newCapacity - MAX_ARRAY_SIZE > 0)
        newCapacity = hugeCapacity(minCapacity);
    // minCapacity is usually close to size, so this is a win:
    elementData = Arrays.copyOf(elementData, newCapacity);
}

数组长度

        最小长度10
        最大长度Integer.MAX_ARRAY_SIZE

因为实现Iterable支持foreach遍历语法

有两个迭代方法

  public Iterator<E> iterator();//向后
  public ListIterator<E> listIterator();//向前
  public ListIterator<E> listIterator(int index);//指定位置向前

常见错误用法

迭代过程中修改数组结构(remove、add、set)会抛出异常ConcurrentModificationException
删除可用迭代器中的删除,并且删除前调用next方法it.next();

上一篇 下一篇

猜你喜欢

热点阅读