diff --git a/libraries/array/readme.md b/libraries/array/readme.md index 2e936ab3..d99a0cc2 100644 --- a/libraries/array/readme.md +++ b/libraries/array/readme.md @@ -10,7 +10,7 @@ crosses a page boundary, it is not delegated and a bit slower. It's a very C++-style library that does unidiomatic things with interface default functions to get diamond inheritance. -# Quick demo: +## Quick demo: ```java var array = LongArray.mmapForWriting(Path.of("/tmp/test"), 1<<16); @@ -25,4 +25,16 @@ array.forEach(0, 100, (pos, val) -> { System.out.println(pos + ":" + val); }); -``` \ No newline at end of file +``` + + +## Query Buffers + +The library offers many operations for sorting and dealing with sorted data. +Especially noteworthy are the operations `retain()` and `reject()` in +([IntArraySearch](src/main/java/nu/marginalia/array/algo/IntArraySearch.java) and [LongArraySearch](src/main/java/nu/marginalia/array/algo/LongArraySearch.java)) which act upon the +classes [IntQueryBuffer](src/main/java/nu/marginalia/array/buffer/IntQueryBuffer.java) +and [LongQueryBuffer](src/main/java/nu/marginalia/array/buffer/LongQueryBuffer.java); +they keep or remove all items in the buffer that exist in the range. These are used +to offer an intersection operation for the B-Tree that has in practice sub-linear run time. +