关于 几种优秀的数据结构 可以提升查询性能的

hash表,二叉树,B树,B加树
区别:hash表用在 精准定位,树用在范围匹配,
范围匹配的规则:自己定义,可以是 根据 hash,可以根据其他的大小

hash表是一种数据结构,而hashmap的底层是hash表的 实现,不是hash表

	1.hash表 是数组 不是数组加链表,数组加链表是hashmap为了解决hash冲突的hash表的具体实现
	
	2.hash表 是根据 hash算法计算hash值,然后通过散列函数 计算出 数组下标
	
	3.所以,在设计hashcode()和 equals()要保证,equals相同 hashcode必须相同,但是equasl不同 不能代表hash不同
	
	4.hash冲突的原因:得到的数组下标相同,得经过比较才能得出 他们equals相同与否,
	因为即使equals不同,得出的hash值不同,但是得到的数组下标可能相同
	
	5.为什么不直接比较equals(直接比就可以判断是否相同),而是先比较hash值
	因为hash值已经计算出来了,比较更快,如果hash值不同那么,equals一定不相同,如果hash值相同,再比较equals

树的结点

	1.树的结点 一般是由 数据和指针组成的
	2.二叉树的 结点 是一个结点只有一个数据和两个指针
	3.B树的 一个结点 是 多个数据(key) 加多个指针

B树(m叉)

	1.B树也叫多路搜索树
	2.树中每个节点最多包含m个孩子,就是 有 m条路线
	3.每个非叶子结点 由n个key和 n+1个指针组成,n<= m-1,n>= m/2 -1
	4.B树是怎么比大小的:
			1.二叉树可以通过指针找寻下一个数据进行比较
			2.B树:
				1.在结点处 与 结点的 多个 key比较不需要通过指针
				2.寻找下一层的结点 需要通过指针 找寻
				3.并且 在与一个结点的 多个结点比较时,是先与key比较 如果小直接指针下一层
				如果大,那么先与右边的下一个key比较,如果小那么指针下一层

B树和二叉树的区别

	1.B树由于其特点: 就是 一个结点可以有 多个数据(key),那么它的深度就会更浅
	2.核心就是 一个结点 可以有多个key
	3.B树和二叉树 的 比较找寻 也不一样,二叉树因为一个结点只有一个数据,它只能通过指针找寻
	  而B树 因为一个结点有 多个数据(key),那么在结点处的多个key之间比较时,不需要通过指针,比其中的一个key小了,再通过指针通往下一层

B+树和B树的区别

	1.由于B+Tree只有叶子节点保存key信息,查询任何key都要从root走到叶子。所以B+Tree的查询效率更加稳定
	2.在叶子结点,区别与B+树 每个叶子结点都会多一个指针指向旁边的叶子结点
	  这样的好处,可以范围查询,从一个叶子结点可以直接一步指向 旁边的叶子结点,不用从头查询

Guess you like

Origin blog.csdn.net/Chen4852010/article/details/121564800