摘要: 哈希表为解决冲突,可以采用开放地址法和链地址法来解决问题。 开放地址法(再散列法) 链地址法(数组+链表) Java中 的HashMap使用链地址法。 阅读全文
posted @ 2025-05-15 21:20 kuki' 阅读(15) 评论(0) 推荐(0)
摘要: 读 在最佳情况下,直接通过数组下标访问数据,O(n)还是O(1) 阅读全文
posted @ 2025-05-15 21:00 kuki' 阅读(13) 评论(0) 推荐(0)
摘要: 不追求绝对的平衡,插入/删除节点时,允许有一定的局部不平衡。 红黑树是一种自平衡的二叉搜索树,插入和删除的时间复杂度是O(log n); 红黑树和二叉搜索树、AVL树有什么区别? 红黑树:节点颜色为红色或黑色 根节点和叶子节点为黑色; 任意一个红色节点的子节点是黑色。 插入和删除操作的时间复杂度都是 阅读全文
posted @ 2025-05-15 20:48 kuki' 阅读(34) 评论(0) 推荐(0)
摘要: HashMap将数据以键值对的形式存储,是线程不安全的。 HashMap的底层实现? 数组+链表+红黑树 JDK8 引入了红黑树(Red-Black Tree),链表长度超过8时,会将链表转换为红黑树,来提高在链表长度较长时的查找性能。 总结:java8 使用数组+链表 或红黑树(链表超过8会转为红 阅读全文
posted @ 2025-05-15 19:26 kuki' 阅读(29) 评论(0) 推荐(0)
摘要: 常用的有 HashMap, LinkedHashMap, TreeMap, ConcurrentHashMap 对于不需要排序的场景,优先考虑HashMap, 它是性能最好的Map实现。 如果需要保证线程安全,可以使用ConcurrentHashMap。 它的性能好于Hashtable,因为它在pu 阅读全文
posted @ 2025-05-15 18:05 kuki' 阅读(30) 评论(0) 推荐(0)