ArrayList
简介
ArrayList底层为Object数组, 当不提供参数实, 默认使用空数组, 由于add 有可能会导致数组扩容, 当list的大小可预计时, 最好提供固定的大小以防止扩容
add过程
先确定当前数组大小够不够,不够的话扩容, 每次变为之前1.5倍, 如果不在末尾插入, 会导致数组拷贝
remove过程
若非移动末尾项, 会导致数组拷贝
LinkedList
底层为双向链表
add和remove代价小, 查询代价大
ArrayList底层为Object数组, 当不提供参数实, 默认使用空数组, 由于add 有可能会导致数组扩容, 当list的大小可预计时, 最好提供固定的大小以防止扩容
先确定当前数组大小够不够,不够的话扩容, 每次变为之前1.5倍, 如果不在末尾插入, 会导致数组拷贝
若非移动末尾项, 会导致数组拷贝
底层为双向链表
add和remove代价小, 查询代价大