ArrayList VS Vector(ArrayList和Vector的区别)_面试的时候经常
发布时间:2020-12-14 06:30:07 所属栏目:Java 来源:网络整理
导读:div class="cnblogs_code" 数据增长 当需要增长时 默认增长为原来一培,而 却是原来的一半 这个我们可以看看他们的源码就可以知道: ArrayList的size()方法: } Vector的size()方法: } 其实Vector的其他很多方法都是同步的: setSize( modCount++ (newSize
<div class="cnblogs_code"> 数据增长当需要增长时默认增长为原来一培,而却是原来的一半 这个我们可以看看他们的源码就可以知道: ArrayList的size()方法:
}
Vector的size()方法:
}
其实Vector的其他很多方法都是同步的:
setSize( modCount++ (newSize > } ( i = newSize ; i < elementCount ; i++ elementData[i] = elementCount =
elementCount == 0 }
那现在我们应该设计一个方案来研究我们的这些结论的正确性!! 下面给出ArrayList线程不安全证明方案:
HongtenArrayList
List
下面贴出部分运行结果: 线程不安全: 当然线程安全下面会出现:(运行结果都是10000) 9982
9988
9990
9979
9981
9977
9965
9971
9848
9846
9989
9993
9991
9678
9995
9992
9998
9994
9996
9997
9999=============
10000
对于增长,我们可以看看ArrayList的源码: ArrayList:grow()
grow(
oldCapacity = newCapacity = oldCapacity + (oldCapacity >> 1 (newCapacity - minCapacity < 0 newCapacity = (newCapacity - MAX_ARRAY_SIZE > 0 newCapacity =
elementData = }
Vector:grow() grow(
oldCapacity = newCapacity = oldCapacity + ((capacityIncrement > 0) ?
(newCapacity - minCapacity < 0 newCapacity = (newCapacity - MAX_ARRAY_SIZE > 0 newCapacity = elementData = }
(编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |