Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Merge ranges with guava

Tags:

java

guava

I need to merge some ranges.

I discovered guava and see that it can handle it in some cases.

RangeSet<Integer> rangeSet = TreeRangeSet.create();
rangeSet.add(Range.closed(1, 10)); // {[1, 10]}
rangeSet.add(Range.closed(8, 15)); // {[1, 15]}

Now, I need to tell Guava that I need that [1, 10] + [11, 20] = {[1, 20]} and not {[1, 10], [11, 20]}.

Is there an option somewhere for this?

like image 324
Arnaud Denoyelle Avatar asked Sep 07 '25 11:09

Arnaud Denoyelle


1 Answers

If you want ranges like this to be merged, you need to canonicalize them first:

rangeSet.add(Range.closed(1, 10).canonical(DiscreteDomain.integers()); 
// {[1, 11)}
rangeSet.add(Range.closed(11, 20).canonical(DiscreteDomain.integers());
// {[1, 21)}
like image 198
Louis Wasserman Avatar answered Sep 10 '25 04:09

Louis Wasserman