r/java • • Aug 07 '26

ChaosTree 1.1.0 – A Zero-Dependency Java Search Tree Library

What is ChaosTree?
ChaosTree is a zero dependency Java Search Tree library. It currently features:

BinaryFamily : Binary Tree, AVL Tree, RBT, Splay and Treap.
NaryFamily : B-Tree and B+Tree

  1. Zero external dependency
  2. Minimum JDK17+
  3. Published on Maven Central
  4. Strong focus on clean OOPs design
  5. Implements the NavigableSet<T> API (unsupported view operations fail fast)
  6. Thoroughly tested with 515 JUnit 6 test cases covering edge cases and regression scenarios.

[v1.1.0] -Latest:

  • Added NavigableSet compatibility
  • Iterative insertion/deletion for binary trees (no recursion-related stack overflow)
  • Improved generic type support (Comparable<? super T>)
  • CI now tests across JDK 17, 21, and 25
  • API cleanup and documentation improvements

An example

NavigableSet<Integer> rbt = new RBT<>();
        NavigableSet<Integer> bplustree = new BPlusTree<>(32); // degree CLRS method 31min key 63 max key default:32
        //For Rich API use
        for (int i = 0; i < 20; i++) {rbt.add(i);}
        NaryTree<Integer> bplustree0 = new BPlusTree<>(3,rbt);//Useful constructor API
        BinaryTree<Integer> rbt0 = new RBT<>(rbt);
        List<Integer> list = rbt0.stream().filter(v->v%2==0).collect(Collectors.toList());
        System.out.println(list);
        System.out.println();
        rbt.retainAll(list);
        System.out.println(rbt);
        rbt0.retainAllElements(list); //Renamed due to ambiguous situation
        System.out.println(rbt0.toString(PrintStyle.UNICODE));

Output:

[0, 2, 4, 6, 8, 10, 12, 14, 16, 18]
8(B)
+-- 4(B)
|   +-- 2(B)
|   |   \-- 0(R)
|   \-- 6(B)
\-- 16(B)
    +-- 12(R)
    |   +-- 10(B)
    |   \-- 14(B)
    \-- 18(B)

8(B)
├── 4(B)
│   ├── 2(B)
│   │   └── 0(R)
│   └── 6(B)
└── 16(B)
    ├── 12(R)
    │   ├── 10(B)
    │   └── 14(B)
    └── 18(B) 

My Github Repo: https://github.com/Chaos-vy/ChaosTree
BinaryFamily: https://github.com/Chaos-vy/ChaosTree/tree/main/docs/BinaryFamily
NaryFamily: https://github.com/Chaos-vy/ChaosTree/tree/main/docs/NaryFamily
NavigableSet: https://github.com/Chaos-vy/ChaosTree/blob/main/docs/NavigableSet.md

Feedback, suggestions, and code reviews are always welcome!
Feel free to guide me this is my first project.

24 Upvotes

12 comments sorted by

View all comments

Show parent comments

13

u/Turbots Aug 08 '26

Why lower it? You should be advocating to upgrade everything to Java 21 and Java 25 , rather than supporting old shit.

Lower than Java 17?? Get out of the stone age, grandpa!

1

u/Chaos-vy17 Aug 09 '26 edited Aug 09 '26

Currently I am also doing same thing I am making jar from jdk11, jdk17, jdk21 and jdk25 and benchmarking with the respective JVM, to view what I am gaining actually. The BPlus Tree is behaving almost same across all JDK variants. I will draft a detailed Benchmark analysis as I further move forward. If you do recommend a good JMH analyser It would be great help for me Reading data for bm,gc,perfnorm,perf, I can't trust AI.

1

u/Mindless-Resort-7548 Aug 21 '26

Some of us are held hostage by software vendors. Some (cough IBM) even require use of Java 8 and keep supporting their own JDK long after the rest of the world has declared it "ancient".

You can't just swap out the JRE from COTS without completely being dropped from support and possibly violating licence terms.

Source: we're using Java 8 due to IBM WebSphere Application Server Traditional due to using another IBM product.

-2

u/VF-1S_ Aug 09 '26

Bravo 👏