JDK源码(二十一):ArrayList
Posted jdkSpring
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了JDK源码(二十一):ArrayList相关的知识,希望对你有一定的参考价值。
类名
public class ArrayList<E> extends AbstractList<E>
implements List<E>, RandomAccess, Cloneable, java.io.Serializable
变量
常用方法
ArrayList()
add(E e)
在添加一个元素时,先调用ensureCapacityInternal方法进行扩容,
get(int index)
remove(int index)
remove(Object o)
addAll(Collection<? extends E> c)
fail-fast 机制
List<String> list = new ArrayList<String>();
for (int i = 0; i < 10; i++) {
list.add(i + "");
}
for (String s : list){
if ("1".equals(s)){
list.remove(s);
}
}
如上,当在以上for循环中删除元素时,会报如下错误:
Spliterator
在jdk1.8中新增了一个Spliterator接口,是Java为了并行遍历数据源中的元素而设计的迭代器。可以按顺序或并行方式对流使用Spliterator。在1.8的ArrayList中也实现了这个接口。
static final class ArrayListSpliterator<E>
implements Spliterator<E>
List<String> arrs = new ArrayList<>();
arrs.add("a");
arrs.add("b");
arrs.add("c");
arrs.add("d");
arrs.add("e");
arrs.add("f");
Spliterator<String> p = arrs.spliterator();
//此时p为a b c d e f
Spliterator<String> q = p.trySplit();
//此时p为d e f q为a b c
Spliterator<String> j = p.trySplit();
//此时p为e f q为a b c j为d
p.forEachRemaining(s -> System.out.print(s + " "));
System.out.println();
q.forEachRemaining(s -> System.out.print(s + " "));
System.out.println();
j.forEachRemaining(s -> System.out.print(s + " "));
源码(1.8)
以上是关于JDK源码(二十一):ArrayList的主要内容,如果未能解决你的问题,请参考以下文章
介绍开源的.net通信框架NetworkComms框架 源码分析(二十一 )TCPConnectionListener
Unity HTFramework框架(二十一)Debug调试器
二十一.SpringCloud源码剖析-Hystrix的初始化