B树或B+的现有实现;Java中的树

B树或B+的现有实现;Java中的树,java,data-structures,b-tree,Java,Data Structures,B Tree,我正在做一个项目,其中我需要btree或b+树数据结构。有人知道现有的btree或b+树实现(使用插入、删除、搜索算法)吗?它应该接受字符串作为输入,并形成这些字符串的b树或b+树。由于缺乏关于您需要解决的问题的详细信息,我将允许自己建议一种可能解决您的问题的替代解决方案:使用红/黑树 红色/黑色树可被视为b-树,如上所述: 红黑树在结构上类似于顺序为4的B树,其中每个节点可以包含1到3个值和(相应地)2到4个子指针。在这种B-树中,每个节点将仅包含一个与红黑树的黑节点中的值匹配的值,在同一节点

我正在做一个项目,其中我需要btree或b+树数据结构。有人知道现有的btree或b+树实现(使用插入、删除、搜索算法)吗?它应该接受字符串作为输入,并形成这些字符串的b树或b+树。

由于缺乏关于您需要解决的问题的详细信息,我将允许自己建议一种可能解决您的问题的替代解决方案:使用红/黑树

红色/黑色树可被视为b-树,如上所述:

红黑树在结构上类似于顺序为4的B树,其中每个节点可以包含1到3个值和(相应地)2到4个子指针。在这种B-树中,每个节点将仅包含一个与红黑树的黑节点中的值匹配的值,在同一节点中,在该值之前和/或之后有一个可选值,两者都与红黑树的等效红节点匹配[…]


Java有两个内置类和,提供了红/黑树。所有这些都不会将字符串作为输入并从中生成树,但您可能能够在其中一个类周围实现类似的功能。

有一个非常可靠的b+树实现。还有h+树,这是一个有趣的相关数据结构。

你可以试试Electric的()。

我必须实现我自己的开放源代码。

@rohit:我对你的问题做了一些编辑,以使它不太明显地成为“接近而不是真实问题”的候选。如果您不喜欢我所做的更改,请随意还原。您能详细说明一下您将使用数据结构做什么吗?我还没有测试过它,但拆分方法正是我在每次插入和删除时所寻找的方法。只有2个元素,这几乎会一直发生。问题:你洗牌顶级元素吗?假设你有1-5000的数据(为了这个评论,是5000),而你的第一个元素是300,那么将其设置为接近2500是有意义的吗?顺便说一句+1作为您的答案。@TejaswiRana我已经用5000个元素(1-5000)进行了测试,根的值是2048。默认实现是2-3树,但这只是出于测试目的。您可以在构造函数中按树的顺序(minKeySize)传递。从那时起,就有了和。@PeterLamberg yes-MapDB将成为一个非常好的项目。距离第一次稳定发布还有几周,但看起来很不错。请注意,MapDB没有使用b+树b/c的并发性要求-我相信他们使用的是某种链接树。