我有一组代表我拥有的值的范围。
添加新范围时,可能会删除范围之间的间隔。
示例:
我有范围[10, 50]
,[70, 100]
,[150, 200]
,其中数据保存在两个列表中:
start_list
(10,70,150)&end_list
(50,100,200)。
这是我可能会获得预期输出的4个不同可能的输入:
-
[20, 170]
结果应为[10, 200]
,因为添加了所有间隔。 -
[5, 170]
结果应为[5, 200]
,因为添加了所有间隔。 -
[20, 220]
结果应为[10, 220]
,因为添加了所有间隔。 -
[1, 120]
结果应为[1, 120]
,[150, 200]
,因为添加了一些间隔。
但是,我似乎无法获得这种方法。谁能帮我解决这个问题?我不能使条件正确。
您可以使用guava解决此问题。
RangeSet<Integer> r = TreeRangeSet.create();
r.add(Range.closed(10, 50));
r.add(Range.closed(70, 100));
r.add(Range.closed(150, 200));
// adds
r.add(Range.closed(20, 170));
// r.add(Range.closed(5, 170));
// r.add(Range.closed(20, 220));
// r.add(Range.closed(1, 120));
System.out.println(r);