sas*_*cha 3 java range intervals guava
我渴望在我的程序中使用Guava的RangeSets.尽管添加和合并范围的功能,我也对我的范围的"大小"感兴趣.
一些评论:
这似乎是没有内置的东西(或者我没有看到它),我想知道是否有一个明确的理由反对这个概念(这意味着我不应该自己实现一些getSize()函数)或不.
我们来看看我的用例:
RangeSet<Integer> usageTicks = TreeRangeSet.create();
usageTicks.add(Range.closedOpen(3, 7));
usageTicks.add(Range.closedOpen(12,18));
usageTicks.add(Range.closedOpen(18, 23));
int size = usageTicks.hypotheticalGetSizeFunction(); // size = 15
Run Code Online (Sandbox Code Playgroud)
是否有任何理由反对以下情况:
Set<Range<Integer>> setOfRanges = usageTicks.asRanges();
int sum = 0;
for(Range<Integer> range : setOfRanges)
sum += (range.upperEndpoint() - range.lowerEndpoint());
Run Code Online (Sandbox Code Playgroud)
番石榴Range
只需要其封闭类型中的一个:它们实现Comparable
.
但并非所有实施Comparable
都具有距离概念.例如,你如何测量两个String
s 之间的距离?
这就是为什么番石榴也有DiscreteDomain
和ContiguousSet
; 与前者你有这样的方法next()
,prev()
和distance()
,这是你在这里感兴趣的.Guava的网站上有一篇文章.