ArrayList
和HashMap
是Java集合框架中最常用的两个类,它们的默认大小(初始容量)如下:
1. ArrayList 的默认大小
- 默认初始容量:10
- 说明:
- 当创建一个
ArrayList
时,如果没有指定初始容量,它会使用默认的初始容量10。
- 当创建一个
- 扩容机制:
- 当
ArrayList
中的元素数量超过当前容量时,它会自动扩容。 - 扩容规则:新容量 = 旧容量 * 1.5(即增加50%)。
- 当
2. HashMap 的默认大小
- 默认初始容量:16
- 默认负载因子:0.75
- 说明:
- 当创建一个
HashMap
时,如果没有指定初始容量和负载因子,它会使用默认的初始容量16和负载因子0.75。
- 当创建一个
- 扩容机制:
- 当
HashMap
中的元素数量超过容量 * 负载因子
时,它会自动扩容。 - 扩容规则:新容量 = 旧容量 * 2(即翻倍)。
- 当
3. 总结
集合类 | 默认初始容量 | 默认负载因子 | 扩容规则 |
---|---|---|---|
ArrayList | 10 | 不适用 | 新容量 = 旧容量 * 1.5 |
HashMap | 16 | 0.75 | 新容量 = 旧容量 * 2 |
4. 注意事项
- 指定初始容量:
- 如果能够预估集合中存储的元素数量,建议在创建
ArrayList
或HashMap
时指定初始容量,以减少扩容次数,提高性能。
- 如果能够预估集合中存储的元素数量,建议在创建
- 负载因子:
HashMap
的负载因子决定了扩容的时机。负载因子越小,扩容越频繁,但哈希冲突的概率越低;负载因子越大,扩容越少,但哈希冲突的概率越高。
5. 代码示例
// ArrayList 示例
List<String> list = new ArrayList<>();
System.out.println("ArrayList 默认容量: 10");
// HashMap 示例
Map<String, Integer> map = new HashMap<>();
System.out.println("HashMap 默认容量: 16, 默认负载因子: 0.75");
总结
ArrayList
的默认初始容量是10,扩容时容量增加50%。HashMap
的默认初始容量是16,默认负载因子是0.75,扩容时容量翻倍。- 在实际开发中,如果能够预估集合的大小,建议指定初始容量以提高性能。
THE END
暂无评论内容