Java源码分析之ArrayList
2017-10-09 16:55
447 查看
Java源码分析之ArrayList
元素可以重复
解读:elementDate存储数据,size表示包含元素的数量
解读:共3个构造方法,第一个方法指定数组的长度;第二个方法默认数据长度10;
解读:先调整数组的长度,超过数组长度的话,grow方法自增一半.
index(Object o)
解读:从前到后遍历数组元素依次与目标对象比较,查询效率不高。
lastIndexOf则从后向前。
remove(Object o)
特点
有序元素可以重复
属性
private transient Object[] elementData; private int size;
解读:elementDate存储数据,size表示包含元素的数量
构造方法
public ArrayList(int initialCapacity) { super(); if (initialCapacity < 0) throw new IllegalArgumentException("Illegal Capacity: "+ initialCapacity); this.elementData = new Object[initialCapacity]; } public ArrayList() { this(10); } 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); }
解读:共3个构造方法,第一个方法指定数组的长度;第二个方法默认数据长度10;
重要方法
add(E e):尾部添加一个元素public boolean add(E e) { ensureCapacityInternal(size + 1); // Increments modCount!! elementData[size++] = e; return true; }
解读:先调整数组的长度,超过数组长度的话,grow方法自增一半.
index(Object o)
public int indexOf(Object o) { if (o == null) { for (int i = 0; i < size; i++) if (elementData[i]==null) return i; } else { for (int i = 0; i < size; i++) if (o.equals(elementData[i])) return i; } return -1; }
解读:从前到后遍历数组元素依次与目标对象比较,查询效率不高。
lastIndexOf则从后向前。
remove(Object o)
相关文章推荐
- 从源码分析java集合【ArrayList】
- java ArrayList源码分析参考文章
- Java Collections Framework之ArrayList源码分析
- Java 源码分析 -- ArrayList
- Java源码分析之ArrayList
- 【Java基础】Java学习之ArrayList源码常用方法分析
- Java源码分析 – ArrayList动态数组列表源码分析
- 【Java源码分析】为什么不可以在指定默认容量的ArrayList对象中插入元素
- 【转】java源码分析ArrayList
- Java集合系列:-----------03ArrayList源码分析
- Java ArrayList 源码分析与提高性能替代方案
- java核心之集合框架——ArrayList源码分析
- java.util.ArrayList 实例推动源码分析
- 【Java8源码分析】集合框架-ArrayList
- Java集合源码分析(二)ArrayList
- java源码分析(1)---------ArrayList的扩容机制
- (7) java源码分析------之ArrayList (对应数据结构中线性表中的顺序表,JDK1.6)
- Java数据结构源码分析-ArrayList
- Java源码分析系列之ArrayList读后感
- java ArrayList源码分析