我们一直在使用 Google 的 guava 库中的 com.google.common.collect.RangeMap 类,发现它非常有用。特别是,我想使用 asMapOfRanges() 方法并依赖于返回的 Map 的迭代顺序是每个条目中 Range 的顺序。 com.google.common.collect.ImmutableRangeMap 的实现似乎明确地遵守了这个实现,但是在 JavaDoc 中似乎没有任何地方提到它。我想知道我是否可以在任何 RangeMap 上依赖这种行为,而它只是在 JavaDoc 中被遗漏了,或者是否打算未指定迭代顺序,在这种情况下,我应该在迭代之前对结果进行排序。谢谢你的帮助。

最佳答案

好吧,我已经查看了实现,也得出了相同的结论,我的意思是这段代码:

static final Ordering<Range<?>> RANGE_LEX_ORDERING = new Ordering<Range<?>>() {
    @Override
    public int compare(Range<?> left, Range<?> right) {
      return ComparisonChain.start()
          .compare(left.lowerBound, right.lowerBound)
          .compare(left.upperBound, right.upperBound)
          .result();
    }
  };

是否基于范围排序...

我还认为 @Beta 是为什么没有记录下来的迹象。他们可能会在 future 的版本中更改它。如果我想使用它,我会再进行一个额外的单元测试,如果这种情况发生变化,它就会失败,它将充当一个安全网。

关于java - Google Guava RangeMap 迭代顺序,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/25646191/

10-10 10:39