bisq/common
Steven Barclay 1f8538f6c1
Add utilities for SortedSet ranging with mapped keys & predicates
Provide a 'RangeUtils' class for computing subsets of a navigable set
with natural element order, with each bound defined by a mathematical
filter (that is, a predicate specifying whether an element is 'big' -
true, or 'small' - false), instead of a specific element. This allows
the subset of all elements which map into a given range to be computed,
provided the mapping function is (strictly or non-strictly) increasing.
Provide a fluent interface for this in RangeUtils (with unit tests).

To support this, provide a Comparable sub-interface, 'ComparableExt', of
elements which may be compared with marks/delimiters instead of just
elements of the same type, to work round the limitation that sorted (&
navigable) Sets/Maps in Java do not support general binary searching
with a filter (predicate) on the keys instead of just a specific key.

This will make it possible to efficiently take subsets of objects within
a given date range, say, without having to scan the entire set, provided
it is sorted (w.r.t. a suitable natural order).
2023-05-10 19:41:19 +01:00
..
src Add utilities for SortedSet ranging with mapped keys & predicates 2023-05-10 19:41:19 +01:00
build.gradle Gradle: Apply bisq.java-conventions to all projects 2023-02-05 22:02:13 +01:00