An implementation of B+Tree (a multiway search tree based on the memory, i.e., all data records are stored in the memory instead of the disk).
Add dependency (maven) :
<dependency>
<groupId>xyz.proadap.aliang</groupId>
<artifactId>MemoryBasedBPlusTree</artifactId>
<version>1.2.0</version>
</dependency>
Instantiation of BPlusTree
/**
* BPlusTree<K,E>
* K is the genericity of entry that need to be comparable
* E is the genericity of data item that can be any object
*/
BPlusTree<Integer,String> bPlusTree = new BPlusTree<>(16);//instance B+Tree with specific order
//instance B+Tree with default order
BPlusTree<Integer,String> bPlusTree = new BPlusTree<>(); //default order is 9
bPlusTree.insert(0, "data record 1");
bPlusTree.insert(0, "data record 2");
bPlusTree.insert(1, "data record 3");
bPlusTree.insert(2, "data record 4");
bPlusTree.insert(3, "data record 5");
//query all data records under the entry 0
List<String> queryResult = bPlusTree.query(0);
System.out.println(queryResult); //[data record 2, data record 1]
//query all data records under the entries [0,3)
List<String> queryResult = bPlusTree.rangeQuery(0, 3);
System.out.println(queryResult); //[data record 2, data record 1, data record 3, data record 4]
//return true if update successfully, false otherwise
bPlusTree.update(0, "data record 2", "data record 12");
System.out.println(bPlusTree.query(0)); //[data record 1, data record 12]
/**
* remove all data records under the entry
* return true if remove successfully, false otherwise
*/
bPlusTree.remove(1);
System.out.println(bPlusTree.query(1)); //[]
/**
* remove specific data record under the entry (using ".equals()" to determine whether certain data record is the present)
* return true if remove successfully, false otherwise
*/
bPlusTree.remove(0, "data record 12");
System.out.println(bPlusTree.query(0)); //[data record 1]
BPlusTree is under the Apache 2.0 license. See the Apache License 2.0 file for details.
If it is helpful for you, you could give me a star to support me.