Merge ranges with guava

guava, java

Solution

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)}

Problem

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?

Original source