hashmap与hashtable,arraylist与vector

发布时间 2023-09-01 12:03:27作者: 一个有理想的猿

hashmap:

key可以为null,key为null的话,就不会计算hashcode码,直接给了一个0,

hashmap是2倍扩容原来的容量左移一位,

线程不安全,

计算下标不同,hashmap下标是高位与地位的‘&’运算

hashtable:

key以及value都不能为null,value为null会抛异常,hashcode值是根据key来计算的,而null没有hashcode()方法,所以key也不能为null,

扩容是2倍加1,原来的容量左移一位,

线程安全被synchronized修饰

计算下标不同,hashtable下标是取余(也就是%号)

arraylist:

线程不安全

1.5倍扩容

vector:

线程安全被synchronized修饰

扩容不同,vector可以传一个增长因子,不传默认二倍

太老了,不建议使用