首页 > 代码库 > 集合中常用算法总结
集合中常用算法总结
1,冲突链表
冲突链表主要用于HashMap,HashTable中,内部采用数组保存链表,链表内部是单向链接,插入的时候会采用头部插入法,
插入的链表包裹数据都是无序的,由于容量的增加,会导致整个数据的重新HASH,所以,两次循环同一个HASH链表,可以得到不同的顺序。
内部实现难点是根据KEY的HASH值获取Bucket
2,双向链表
双向链表相对于数组其在插入上的操作少了,数组为了更改下标,需要移动后面所有的数组,而双向链表只需要更改两个引用就可以达到相同的效果,所有插入的效率远远高于数组
3,红黑树
JAVA数组内部采用一种近视平衡二叉树,红黑树来实现。红黑树有比绝对平衡树更高的插入效率,因为不需要保证绝对的平衡。
红黑树是一种近似平衡的二叉查找树,它能够确保任何一个节点的左右子树的高度差不会超过二者中较低那个的一陪。具体来说,红黑树是满足如下条件的二叉查找树(binary search tree):
- 每个节点要么是红色,要么是黑色。
- 根节点必须是黑色
- 红色节点不能连续(也即是,红色节点的孩子和父亲都不能是红色)。
- 对于每个节点,从该点至
null
(树尾端)的任何路径,都含有相同个数的黑色节点。
红黑树的难点是左旋和右旋
4,循环数组
循环数组内部采用数组实现,只是增加头和尾的实现,用来实现栈和队列的机制。其内部实现效率高于双向链表实现的栈和队列。
集合中常用算法总结
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。