java面试题网

普通会员

257

帖子

9

回复

129

积分

楼主
发表于 2018-03-21 18:40:01 | 查看: 396| 回复: 0

(1)ArrayList:

①ArrayList底层是通过数组实现的,与LinkedList相比,查询快,增删慢;

②ArrayList的起始容量是10.当数组需要增长时,新的容量按如下公式获得:新容量=(旧容量*3)/2+1,也就是说每一次容量大概会增长50%。

(2)Vector:

①Vector:底层也是通过数组实现的,与ArrayList相比,它是同步的,线程安全的;一般情况下:ArrayList适用于单线程,Vector适用于多线程。

②Vector的容量增长与“增长系数有关”,若指定了“增长系数”,且“增长系数有效(即,大于0)”;那么,每次容量不足时,“新的容量”=“原始容量+增长系数”。若增长系数无效(即,小于/等于0),则“新的容量”=“原始容量x 2”。

(3)LinkedList:

①LinkedList底层是通过链表实现的,与ArrayList相比,查询慢,增删快;

②LinkedList在添加新元素时,先是在双向链表中找到要插入节点的位置index;找到之后,再插入一个新节点。同时,双向链表查找index位置的节点时,有一个加速动作:若index < 双向链表长度的1/2,则从前向后查找;否则,从后向前查找。



您需要登录后才可以回帖 登录 | 立即注册

java面试题网无聊看看网与java建站系统提供技术支持V2.1 网站地图 © 2016-2018