【发布时间】:2016-04-27 00:35:37
【问题描述】:
我正在寻找一种在 Scala 中处理范围的方法。 我需要做的是:
给定一组范围和一个范围(A)返回范围(B),其中范围(A)相交范围(B)不为空
给定一组范围和一个范围(A),从/向该范围集删除/添加范围(A)。
给定 range(A) 和 range(B) 创建一个 range(C) = [min(A,B), max(A,B)]
我在 java 中看到了类似的东西 - http://docs.guava-libraries.googlecode.com/git/javadoc/com/google/common/collect/RangeSet.html
尽管subRangeSet 仅返回相交值,而不是与其相交的集合(或范围列表)中的范围。
RangeSet rangeSet = TreeRangeSet.create();
rangeSet.add(Range.closed(0, 10));
rangeSet.add(Range.closed(30, 40));
Range range = Range.closed(12, 32);
System.out.println(rangeSet.subRangeSet(range)); //[30,32] (I need [30,40])
System.out.println(range.span(Range.closed(30, 40))); //[12,40]
【问题讨论】:
-
如果一定是整数范围,
scala.collection.immutable.Range可能会解决问题?