今天简单说说ArrayList,底层实现是一个数组transientObject[]elementData;添加和删??除的方法是通过数组复制方法,然后增加大小ensureCapacity(intminCapacity)方法扩展ArrayList内部数组的空间大小size()方法获取ArrayList的实际列表大小代替内部数组空间大小isEmpty()方法,判断是否为ArrayList的实际大小为空的contains(Objecto)方法,判断ArrayList中是否存在Object,实际上内部调用indexOf方法indexOf(Objecto)方法获取ArrayList中Object的指针位置(第一个相同的Object),循环遍历所有数组,一一查找。lastIndexOf(Objecto)方法,获取ArrayList中Object的最后一个指针位置(最后一个相同的Object),循环遍历所有数组,逐一查找。clone()方法将原来的ArrayList克隆到新创建的ArrayList中,但list内部数组中的信息保持不变。toArray()方法将原始ArrayList转换为数组。toArray(T[]a)方法将原ArrayList通过get(intindex)方法转换为指定类型的数组,set(intindex,Eelement)方法用于获取指定类型的内容ArrayList中的指针,add(Ee)方法用于设置ArrayList中指定指针位置的内容。ArrayListadd(intindex,Eelement)方法末尾添加内容,在ArrayList中做一个指针添加内容,下一个指针的内容向后移动,为数组增加一个空间,每个指针复制到下一个通过System.arraycopy逐个位置remove(intindex)方法,删除ArrayList中指定指针的内容,通过System.arraycopy将每个指针逐个复制到之前的位置,最后一个位置置为nullremove(Objecto)方法,删除ArrayList中的内容第一个相同的Objectclear()方法清除ArrayList中的内容addAll(Collectionc)方法将所有新的列表添加到原ArrayList的末尾addAll(intindex,Collectionc)方法,将新的列表全部添加到原ArrayList的指定指针位置,其余的向后移动。removeAll(Collection>c)方法,从原ArrayList中删除传入列表的所有内容retainAll(Collection>c)方法,从原ArrayList中保留传入列表的所有内容,删除listIterator(intindex)方法的其余部分,在指定的指针位置开始创建ListIteratorlistIterator()方法,并开始创建ListIteratoriterator()方法,将IteratorsubList(intfromIndex,inttoIndex)方法放在开头,创建从起始指针到结束指针的新SubList,实际上不是ArrayList,但是SubList的起始指针指向ArrayList的fromIndex位置,SubList的结束指针指向ArrayList的toIndex位置。(x));removeIf方法,JDK1.8新增通过lamada表达式删除符合规则的itemarrayList.removeIf(x->x.equals("1")||x.equals("2"));replaceAll方法,通过lamada表达式arrayList.replaceAll(x->x.equals("3")?"Three":x)替换满足规则的项;ArrayListSpliterator利用原来的ArrayList指向起始索引和结束索引拆分成一个新的ArrayList(实际类型是ArrayListSpliterator),但是不能修改。
