|
发表于 2020-6-1 21:00:01
|
显示全部楼层
HashMap和其他3个没有可比性。
AL, LL, V都是List,
AL、V都是基于动态数组,而LL基于(双向)链表、因而LL更适于频繁进行插、删的操作
AL、LL的方法都不是synchronzied,而V是synchronized的
由于LL是链表,所以不存在初始大小、扩大策略等问题
AL、V的构造函数里都可以指定初始大小、且默认都是10(所以在能够确定你要放的东西个数的大概范围时应该事先指定,避免多次重新分配空间)
AL在需要扩大的时候 * 1.5,而V默认 * 2,且V可以指定每次固定变大一个尺寸,比如每次扩大10,而不是翻倍
3者的构造函数,还有addAll方法能够帮助彼此之间转换,用以在不同阶段的大批量操作下,提高性能
V的岁数比较大,属于JDK中的元老。早在java.util.Collection/List还没出现之前的JDK 1.0里,就有了。所以某些情况下,比如MS VM下也通用Applet,只能用Vector
|
|