HashMap 集合的相关性质
- HashMap 冲突解决方法:不是开放地址法,是采用拉链式。
- 所有的key-value 都存储在Entry 中。
- 基于哈希表实现的Map接口,允许键值存储null;
- HashMap有两个影响其性能的参数:初始容量和负载因子。 一般默认的负载因子是0.75。
- HashMap 不是线程安全的,如果要实现线程安全,可以使用Collections.synchronizedMap方法包装
Map m = Collections.synchronizedMap(new HashMap());
- 是快速失败的 fail - fast:在使用迭代器迭代这个集合对象时,如果在A遍历过程中,线程B对这个对象的内容做了修改,则会抛出异常Concurrent Modification Exception。
(所有java.util包下的集合都是快速失败的,java.util.concurrent 包下的容器是安全失败的,遍历时不是在原有的数组上进行遍历,而是拷贝了一份数组进行遍历) - 在单线程遍历过程中,如果要进行remove操作,可以调用迭代器的remove而不是集合的remove,否则会发生异常。