面试题:ArrayList 和 HashMap 的默认大小 ?

ArrayListHashMap是Java集合框架中最常用的两个类,它们的默认大小(初始容量)如下:


1. ArrayList 的默认大小

  • 默认初始容量10
  • 说明
    • 当创建一个ArrayList时,如果没有指定初始容量,它会使用默认的初始容量10。
  • 扩容机制
    • ArrayList中的元素数量超过当前容量时,它会自动扩容。
    • 扩容规则:新容量 = 旧容量 * 1.5(即增加50%)。

2. HashMap 的默认大小

  • 默认初始容量16
  • 默认负载因子0.75
  • 说明
    • 当创建一个HashMap时,如果没有指定初始容量和负载因子,它会使用默认的初始容量16和负载因子0.75。
  • 扩容机制
    • HashMap中的元素数量超过容量 * 负载因子时,它会自动扩容。
    • 扩容规则:新容量 = 旧容量 * 2(即翻倍)。

3. 总结

集合类默认初始容量默认负载因子扩容规则
ArrayList10不适用新容量 = 旧容量 * 1.5
HashMap160.75新容量 = 旧容量 * 2

4. 注意事项

  • 指定初始容量
    • 如果能够预估集合中存储的元素数量,建议在创建ArrayListHashMap时指定初始容量,以减少扩容次数,提高性能。
  • 负载因子
    • 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
点赞10 分享
评论 抢沙发
头像
欢迎您留下宝贵的见解!
提交
头像

昵称

取消
昵称表情代码图片

    暂无评论内容