gpt4 book ai didi

java - Guava 的 RangeSet/Range 中没有 "size"的概念?

转载 作者:塔克拉玛干 更新时间:2023-11-01 22:46:36 24 4
gpt4 key购买 nike

我渴望在我的程序中使用 Guava 的 RangeSets。尽管具有添加和合并范围的功能,但我也对范围的“大小”感兴趣

一些说明:

  • 我感兴趣的范围都不是无限的!
  • 我使用的所有范围都是绑定(bind)类型“closedOpen”
  • 底层用例是一个离散的时空(大小 = 总时间滴答)

这似乎不是内置的东西(或者我没有看到它),我想知道是否有明确的理由反对这个概念(这意味着我不应该自己实现一些 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

是否有理由反对以下内容:

Set<Range<Integer>> setOfRanges = usageTicks.asRanges();
int sum = 0;
for(Range<Integer> range : setOfRanges)
sum += (range.upperEndpoint() - range.lowerEndpoint());

最佳答案

Guava 的 Range 只需要其封闭类型中的一件事:它们实现了 Comparable

但并非所有实现 Comparable 的工具都有距离的概念。例如,您将如何测量两个 String 之间的距离?

这就是为什么 Guava 也有DiscreteDomainContiguousSet ;对于前者,您可以使用 next()prev()distance() 等方法,这是您在这里感兴趣的内容。 Guava 的网站有一个 article在上面。

关于java - Guava 的 RangeSet/Range 中没有 "size"的概念?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22731613/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com