- 博客(4)
- 收藏
- 关注
原创 Java面试关于HashMap常见问题
摘要: HashMap是Java中基于哈希表的Map实现,采用数组+链表+红黑树的数据结构。通过hashCode()计算键的哈希值,使用扰动函数处理后再通过位运算确定数组下标。当元素数量超过容量与负载因子(默认0.75)乘积时会扩容,容量翻倍并重新分配元素。链表会在长度超过8且数组容量≥64时转为红黑树,优化查询效率;当节点数降至6时退化回链表。关键参数包括初始容量(默认16)、负载因子、树化阈值(8)和最小树化容量(64),共同保证HashMap在大多数情况下保持O(1)的时间复杂度。
2025-07-24 23:58:33
1254
原创 Java面试关于HashSet常见问题
Set集合通过hashCode()和equals()方法过滤重复元素:先计算哈希值定位存储位置,若该位置已有元素则用equals()比较,相同则拒绝添加。重写hashCode()必须同时重写equals()以保持两者逻辑一致,否则会导致集合存储逻辑错误。哈希冲突是因有限哈希值空间无法避免不同对象映射到相同值,只能优化无法完全消除。
2025-07-24 23:26:01
581
原创 Java中ArrayList与LinkedList的区别
Java集合框架中ArrayList和LinkedList的核心对比:ArrayList基于动态数组实现,支持快速随机访问(O(1)),但插入删除需移动元素;LinkedList基于双向链表实现,插入删除高效(O(1)),但访问需遍历(O(n))。内存方面ArrayList更紧凑,LinkedList因节点存储额外指针开销更大。实际应用中,90%场景推荐ArrayList,仅在频繁中间操作时考虑LinkedList。两者均为线程不安全,需同步处理时建议使用Collections.synchronizedLi
2025-07-23 22:48:07
1281
原创 修改IDEA内双击Shift呼出Search everwhere(随处搜索)的快捷键的方法(PyCharm内同理)
解决双击Shift触发随处搜索影响编程效率的问题。1.在Keymap设置中找到Navigate目录下的Searcheverywhere,修改快捷键为其他;2.在高级设置中勾选disable double modifier key shortcuts
2025-07-23 20:41:19
342
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅